-
-
[原创]XCTF攻防世界cgpwn2
-
发表于:
2019-10-2 21:49
13681
-
首先进行程序基本信息检查:
需要注意的是,在尝试运行程序的过程中,发现对输入进行了验证,这可能对解题产生影响,也可能不会,先留意一下。
IDA查看一下源码:
strings查看:
有system函数,但是有一个"echo hehehe",这给我不好的感觉。。。
main函数:
没什么问题,直接进hello函数
hello函数:
在hello中我们看到了可以存在溢出的gets()函数。
存在栈溢出,又知道system的函数,理论上来讲直接调用system去执行"/bin/sh"就可以了。但是题目没有给出"/bin/sh"。怎么办呢?我们自己构造然后传入进去就可以了。
pwn函数:
发现函数列表中还有一个pwn函数,看一下:
没什么特殊的,只是告诉你,不能使用之前的直接调用"/bin/sh"了。
在hello函数中,name是一个全局变量,我们将"/bin/sh"传入到name中,那么"/bin/sh"的地址就是name的地址。然后调用system函数去调用就可以了。
首先看一下name的地址:
然后是hello的stack布局:
这里我们使用(0x26 + 4)个数据就可以到达返回地址了。
将返回地址覆盖为system函数的地址,然后再传入我们的name,此时name的地址其实就是"/bin/sh"的地址,相当于给system传入了"/bin/sh"作为参数。
payload的构成已经清晰了:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2019-10-3 10:22
被有毒编辑
,原因: