首页
社区
课程
招聘
[原创][分享]SECCON 2017 baby_stack
发表于: 2017-12-12 14:44 7201

[原创][分享]SECCON 2017 baby_stack

2017-12-12 14:44
7201

话说跪求关注博客 http://bestwing.me

一个简单的缓冲区溢题目,程序由go 语言编写而成,所以并不能直接F5去分析。


程序的main_memcpy存在漏洞,可发生栈溢出

在调试的过程中,我们会发现一个不一样的地方

正常,我们都是rip储存着返回地址,而这确实rsp存储的,这就意味着函数入口时的rsp指向retn地址,下面跟着参数

另外还有一个问题,如果是只是单纯的"A"*192+p64(ret)程序是会报错的,

call main_memcpy结束后,我们可以看到有两条汇编

有两条栈操作,对象分别是name的字符串以及一个name的长度,于是我们构造一个
payload = "B" * 104 + p64(0x0000000000599940) + p64(0x200) + "D" * 8

那么剩下的事情只要构造 rop-chain就行了

思路如下,构造一个read 读入 /bin/sh , 读入地址在bss上,然后构造 execve 去执行 /bin/sh


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (8)
雪    币: 5676
活跃值: (1303)
能力值: ( LV17,RANK:1185 )
在线值:
发帖
回帖
粉丝
2
师傅有题目吗
2017-12-12 18:09
0
雪    币: 60
活跃值: (314)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
3
题目还没关的样子
2017-12-13 00:43
0
雪    币: 264
活跃值: (214)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
4
holing 师傅有题目吗
题目链接  https://pan.baidu.com/s/1o83MPKI
2017-12-14 19:21
0
雪    币: 359
活跃值: (50)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
补充一下,其实这个程序是可以反编译的,问题只是在变量长度的预设上,可以在Option->Compiler将sizeof(int)设置为4就可以了。
2017-12-15 14:08
0
雪    币: 60
活跃值: (314)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
6
joshuahxl 补充一下,其实这个程序是可以反编译的,问题只是在变量长度的预设上,可以在Option->Compiler将sizeof(int)设置为4就可以了。
哇好厉害,你怎麽知道可以这样设置的
2017-12-17 06:07
0
雪    币: 359
活跃值: (50)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
返無歸一 哇好厉害,你怎麽知道可以这样设置的
看报错和官方的解决方案
2017-12-17 12:18
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
不错!
2017-12-17 21:45
0
雪    币: 264
活跃值: (214)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
9
joshuahxl 补充一下,其实这个程序是可以反编译的,问题只是在变量长度的预设上,可以在Option->Compiler将sizeof(int)设置为4就可以了。
666
2017-12-28 13:26
0
游客
登录 | 注册 方可回帖
返回
//