-
-
[原创][分享]SECCON 2017 baby_stack
-
发表于:
2017-12-12 14:44
7190
-
[原创][分享]SECCON 2017 baby_stack
话说跪求关注博客 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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!