IDA插件Ponce(符号执行) 解决网鼎杯Re-signal

   日期:2020-05-14     浏览:211    评论:0    
核心提示:这题很简单,最终的做题人数也体现了这一点。。不过前段时间刚接触了Ponce这一IDA插件神器,就试一试比赛里好不好使。(主要就是懒,不想逆向分析算法了)main:打印第8行puts,似乎就是success的意思;看一下前面的vm_operad:一个大while(1)循环,但对于Ponce来说,只需关心哪里输入,哪里success,哪里wrong。这里的26行read函数就是要求输入长度为15OK,开始下断点调试首先,在scanf函数后一行下个断点,方便在栈中找

这题很简单,最终的做题人数也体现了这一点。。

不过前段时间刚接触了Ponce这一IDA插件神器,就试一试比赛里好不好使。(主要就是懒,不想逆向分析算法了)

main:

打印第8行puts,似乎就是success的意思;

看一下前面的vm_operad:

一个大while(1)循环,但对于Ponce来说,只需关心哪里输入,哪里success,哪里wrong。

这里的26行read函数就是要求输入长度为15

OK,开始下断点调试

首先,在scanf函数后一行下个断点,方便在栈中找到输入的数据

之后在printf("what a shame...");exit();那里的判断语句处下个断点,方便Ponce的使用

之后打开Ponce,选择Symbolic engine(符号引擎)

OK后开始调试,输入15个字符来到第一个断点

数据跟随,找到输入字符串的位置(0x0061FBC3-0x0061FBD1)

ctrl+shift+M将其转化为符号

之后F9运行来到另一个断点

这时程序会走右边也就是exit(),毕竟输入的不对嘛。

先用Ponce分析得到这一位正确的答案,再通过修改EIP让程序往左走,继续下一次循环。

 

这时Ponce就分析出了第一位的正确答案  7(Output)

之后就修改EIP让程序往左走继续循环,重复上面的操作,记录下每一次的最后一位,组合在一起就能获得15位的flag了。

例:

757515121f3d478,提交时加上flag{}

 

Ponce插件下载:https://github.com/illera88/Ponce

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服