首页 > 其他 > 详细

pwnable.tw calc

时间:2019-02-19 19:36:57      阅读:197      评论:0      收藏:0      [点我收藏+]

先把漏洞分析了吧,利用明天再写

题目代码量比较大(对于菜鸡我来说orz),找了很久才发现一个能利用的漏洞

运行之发现是一个计算器的程序,简单测试下发现当输入的操作数超过10位时会有一个整型溢出技术分享图片

这里调试了一下发现是printf("%d",num[num-1])时要输出的结果超过了2^31,2147483648即0x80000000,所以这应该算是一个bug并不是一个可利用的漏洞

技术分享图片

下面我们逆向一下整个程序找到真正可利用的漏洞

技术分享图片

其中get_expr函数在读入时会进行字符的过滤,只会读取+-*/%和数字。可以看到get_expr和parse_expr前都会进行expression和num栈空间清零,这里num记录的是进行parse_expr时数字的总个数

下面看一下parse_expr函数

技术分享图片

以下根据符号求表达式值过程省略,可以看到get_expr函数进行表达式求值处理的过程也是不存在漏洞的。

技术分享图片

这里真正存在的漏洞是eval中的一个任意地址写的漏洞,我们在calc的返回地址栈空间利用这个任意地址写构造一个ROP即可

 

pwnable.tw calc

原文:https://www.cnblogs.com/snip3r/p/10402528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!