pwnable.kr #bof
Nana told me that buffer overflow is one of the most common software vulnerability.
Is that true?
題目有給C的原始碼:
1 |
|
唯一可控的只有輸入的overflowme
,得想辦利用buffer overflow蓋掉key
的值使得第八行的判斷能夠成立。
丟進IDA Pro看func
的部分:
根據組合語言,我畫出了這張stack圖幫助我理解:
雖然overflowme
只配置了32 bytes的空間,但使用了gets()
使得輸入的長度沒有限制,-0x2C
到0x08
之間總共有52 bytes的空間,只要把這部分塞滿就可以進一步將key
的位址0x08
覆蓋成我們希望的值,payload建構如下(要注意是little endian):
1 | $ (python -c 'print "a" * 52 + "\xbe\xba\xfe\xca"'; cat -) | nc pwnable.kr 9000 |