SCTF 2015 pwn试题分析
Re1
是一個(gè)簡單的字符串加密。程序使用了多個(gè)線程,然后進(jìn)行同步。等加密線程加密好了之后才會(huì)啟動(dòng)驗(yàn)證線程。這個(gè)題比較坑的是IDA F5出來的結(jié)果不對,不知道是不是混淆機(jī)制。
剛開始看的是F5后的偽代碼,一臉懵逼。后來看了下匯編才明白是怎么回事。
解密直接打表就可以,也可以寫逆算法。
?
pwn1
用checksec看了一下保護(hù)機(jī)制,有canary+nx保護(hù)。漏洞是一個(gè)簡單的棧溢出,但是沒有辦法劫持程序的流程。
因?yàn)?span style="font-family:Calibri;">flag已經(jīng)被讀到了內(nèi)存中了,所以就想到去leak出來。后來知道有一種ssp leak的玩法,就是故意觸發(fā)canary保護(hù),
而這個(gè)保護(hù)機(jī)制會(huì)輸出argv[]中的程序名,由于棧中argv[]是系統(tǒng)調(diào)用主函數(shù)的參數(shù),棧幀肯定在當(dāng)前的高地址處,所以在棧中一定可以覆蓋的到。
于是就可以去覆蓋了。exp的構(gòu)造是exp=junk+flag的指針。
?
pwn2
這道題開始時(shí)懵逼了一下,因?yàn)楦袷交执┒粗敖佑|的都是格式化串儲(chǔ)存在棧里的。而這道題的格式化串是儲(chǔ)存在bss段里的。格式化字串漏洞是要想向任意地址寫,而格式化串不在棧里地址就沒法指定了,這樣就很尷尬了。
后來想到可以先向棧里寫入一個(gè)要寫入的地址,相當(dāng)于構(gòu)造一個(gè)跳板。但是這樣做的前提是棧里得有一個(gè)指向棧中的指針,調(diào)試起來一看,還真的有這樣的指針。
于是就可以構(gòu)造了。
因?yàn)樽x完之后馬上就會(huì)調(diào)用fflush(),所以這里我就直接寫入got表了。而system函數(shù)題中已經(jīng)提供了,連參數(shù)都已經(jīng)push好了。直接把地址蓋過去就可以了。
兩個(gè)格式字符串是
"%134525283x%4$n"
"%134520973x%12$n"
轉(zhuǎn)載于:https://www.cnblogs.com/Ox9A82/p/5483916.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的SCTF 2015 pwn试题分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql中group by 和having
- 下一篇: IOS开发基础知识--碎片39