[if !supportLists]1.?[endif]?

查看hello函數

顯然,strcpy函數存在棧溢出漏洞。下面進入gdb進行操作,輸入pattern?create 100,輸出構造好的字符串,并復制。

輸入r,并把剛才復制好的字符串輸入
在0x41412941處發(fā)生了錯誤,輸入pattern?offset命令,查看與字符串初地址之間的相對位置(一步到位,直接求出偏移地址)

為了更加方便理解,下面對棧的具體變化情況進行分析。
b?main 下斷點。寄存器表,??臻g,具體執(zhí)行到哪一個匯編代碼都一覽無余。

Si單步步過、

在call指令處單步步入,ni ,注意觀察棧的變化(以上只是為了熟悉gdb的操作)。
在執(zhí)行以下操作之前,先把放回地址壓入棧中,參數的話從右往左入棧
。

舊的esp的位置變成新的ebp的位置,此時esp和ebp二者重合。之后擴展28H大小。
下面構造exp
