Pwn 101
題目計分板:https://zeus.inndy.tw/scoreboard/
題目機器:ssh ntust@train.inndy.tw / overflow4fun

題目:Array


修改 index = 20 的時候可以控制 return address

題目:Overflow


objdump -d -M intel overflow 用 objdump 反組譯 overflow

用 python 產生 00 ~ ff (但是 0a 換成 9a) 的 bin 檔案,你也可以用其他語言或是 hexeditor 產生

s = ''
for i in range(256):
    if i == 0xa: # 換行
        i = 0x9a
    s += chr(i)
open('bin', 'wb').write(s)

GDB 指令

x/i ADDRESS 查看 ADDRESS 的地方,有什麼指令
x/8i ADDRESS 查看 ADDRESS 的地方,有什麼資料(8個 byte)
r (run)
r < bin 把 bin 這個檔案當作 standard input 輸入給現在的檔案來執行
c (continue)
Ctrl-C 暫停程式,回到 GDB
q 結束 GDB

xxd bin > bin.hex 把 bin 用 hex 的方式表達,寫入到 bin.hex
xxd -r bin.hex > bin 把 bin.hex 解碼成 binary 檔案,寫入到 bin

找到 jmp esp (機器碼是ff e4)的位址


bin 整體檔案結構:
(垃圾資料,塞滿前面的空間,20 ~ 40 byte 之間)
return addreshits (塞 jmp esp 的位址)
shellcode

最後解題,在題目機器上面下,bin是你剛剛組好的payload: