SCTF 2015 pwn試題分析


Re1

是一個簡單的字符串加密。程序使用了多個線程,然后進行同步。等加密線程加密好了之后才會啟動驗證線程。這個題比較坑的是IDA F5出來的結果不對,不知道是不是混淆機制。

剛開始看的是F5后的偽代碼,一臉懵逼。后來看了下匯編才明白是怎么回事。

解密直接打表就可以,也可以寫逆算法。

 

pwn1

checksec看了一下保護機制,有canary+nx保護。漏洞是一個簡單的棧溢出,但是沒有辦法劫持程序的流程。

因為flag已經被讀到了內存中了,所以就想到去leak出來。后來知道有一種ssp leak的玩法,就是故意觸發canary保護,

而這個保護機制會輸出argv[]中的程序名,由於棧中argv[]是系統調用主函數的參數,棧幀肯定在當前的高地址處,所以在棧中一定可以覆蓋的到。

於是就可以去覆蓋了。exp的構造是exp=junk+flag的指針。

 

pwn2

這道題開始時懵逼了一下,因為格式化字串漏洞之前接觸的都是格式化串儲存在棧里的。而這道題的格式化串是儲存在bss段里的。格式化字串漏洞是要想向任意地址寫,而格式化串不在棧里地址就沒法指定了,這樣就很尷尬了。

后來想到可以先向棧里寫入一個要寫入的地址,相當於構造一個跳板。但是這樣做的前提是棧里得有一個指向棧中的指針,調試起來一看,還真的有這樣的指針。

於是就可以構造了。

因為讀完之后馬上就會調用fflush(),所以這里我就直接寫入got表了。而system函數題中已經提供了,連參數都已經push好了。直接把地址蓋過去就可以了。

兩個格式字符串是

"%134525283x%4$n"

"%134520973x%12$n"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM