首页
社区
课程
招聘
[分享]第二题 ctf2017_Fpc 的解题思路
发表于: 2017-10-28 15:07 2796

[分享]第二题 ctf2017_Fpc 的解题思路

2017-10-28 15:07
2796
先前走了很多的弯路,从下面先看了一下大致的结构。发现 sub_413D42 ()函数主要是打印的。没有细看里边的东西。导致后来解了二元一次方程。


后来,发现解出来的结果的ASCII码都不对,不是字母和数字的组合。

主程序是下面这么个结构:


在解方程失败后,返回来看。发现程序有112K, 实际逆向出来的函数很少。我如果实现的话,只要12K就够了。肯定有玄机。继续,

看到有人说可能和花指令有关。学习了一下花指令和花指令的识别。以前没接触过花指令。
常用的工具是IDA,会不会有没有识别的指令。然后发现了这里:


用ollydbug载入后,执行删除命令后,看到了花指令。忽略花指令,把正确的指令整理出来。如下:

(A - B) << 2 + A + C = 0xEAF917E2 

(A - B) << 1 + (A - B) + C = 0xE8F508C8 

(A - B) << 1 + (A - B) - C = 0xC0A3C68


但是发现指令时无法跑到花指令这里的,联想到溢出。看了一下花指令开始的地址:0x413131. 如果要实现跳转的话, 对应的字符串是11A。
输入的字符串是123456789abc11A。 可以实现调试。

解上面整理过的方程式:

(A - B) << 2 + A + C = 0xEAF917E2 

(A - B) << 1 + (A - B) + C = 0xE8F508C8 

(A - B) << 1 + (A - B) - C = 0xC0A3C68


A = 0x7473754A    //tsuJ

B = 0x726f6630     //rof0

C = 0x6E756630    //nuf0


经过大小端转换,变成字符串为Just0for0fun,跳转地址11A,

经过测试,填写Just0for0fun11A成功。 



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//