-
-
[原创]由寄存器位数差异引发的漏洞利用
-
发表于:
2020-1-23 10:38
8253
-
前几天有师傅分享了一道练习题,感觉比较有趣(对我这样的新手来说),于是想与大家分享一下思路。
以上是16,32,64位寄存器的大小。
可见有一处花指令,先nop掉看逻辑
要求输入小于等于10也就是0xA,否则程序退出。
查看汇编
可以发现
cmp指令的隐含操作为 op1-op2判断是否等于0。因此可触发类似整数溢出的漏洞。
于是如果我们构造 0x1 0000 0009 - 0xa 就会将eax内容变为 0xffff ffff,从而在后面的read name可以读大量字节,造成栈溢出。
使用file命令查看发现程序为静态链接
且程序内有syscall,因此直接使用ret2syscall进行ROP。
对于这道题来说,即可以手工构造给syscall传参,也可以使用 ROPgadget直接生成利用链
直接生成如下
于是利用思路如下:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2020-1-25 15:44
被kabeor编辑
,原因: 添加题目附件