想讓這支程式可以在自己的機器上執行記得先安裝libssl.so.1.0.0才能執行,因為裡面有用到它的一些function,記得安裝時指定32bits的library啊,因為這支是個ELF 32的binary
這隻程式主要的流程呢,大概就是把輸入的資料做base64 decode後的內容算出md5 hash然後輸出,漏洞關鍵的點在myhash還有process_hash這兩個function
下面是經過整理的myhash程式碼,從裡面看可以得知我們可以從已知的captcha和時間種子推算出stack canary的值,這樣我們就可以突破canary保護機制了
我們可以直接copy一份來做修改就可以當逆推出canary值的工具了,記得編成執行檔後面可以給exploit的python script呼叫來用
我們的原始輸入可以輸入1024(0x400)的bytes
base64的字串在.bss段的0x804b0e0
這樣我們可以拿來當作計算system的argument(/bin/sh)相對位置
因為base64編碼過後的長度是 原始資料 乘以三分之四
這樣的話(擺最後面)/bin/sh字串的位置就是0x804b0e0+(前面base64編碼過後的長度*4/3)
然後就可以開始把payload構造好了
登登!Capture the flag!
這題很囧的是,因為從captcha推算出canary的那個步驟需要time seed,可是很難抓準時間,通常會有細微的誤差,更不要提用remote了,我連直接上面跑都要好幾次才能成功~"~










沒有留言:
張貼留言