首页
社区
课程
招聘
[原创]CTF不好用的CE瞎搞
发表于: 2020-6-18 00:21 6266

[原创]CTF不好用的CE瞎搞

2020-6-18 00:21
6266

最近趁上课之余,刷了一下CTF(https://ctf.bugku.com/challenges)
不好用的CE,言外之意就是说这道题用CE 不好做,这里先分享一下网上其他大佬的解题方式:https://blog.51cto.com/13992485/2429569

下面是我的解题方式:
1、先打开程序,观察
双击程序,出现一个对话框
图片描述
之后是主界面,点击command 可以是值增加1
图片描述

这里我的思路:
1、爆破:写一个程序,模拟点击10000次
2、尝试修改值,直接修改到9999,再次操作
这里,我果断选择第二个方式(其实第一个试了一下,比较内存了,CPU 也一下子就飚上去了)
首先,查看有没有壳(一般都是无壳的,但是还是查看一下)
图片描述
如图:程序是VB 写的,无壳,nice

2、CE附加,尝试查看变量
这里我尝试搜索精确数值,但是发现精确值收缩到最后是一个死胡同,因为有时候是可以查找到这些值,但更多时候,这些值可能只是那么几个值才产生变动,基本上从精确值这里切入比较难,而且即使找到了值,并且进行了修改,在这次显示值是修改了的,但是到了下一次时,值也会自动校正。所以我尝试搜索未知初始值,并且通过不断变动值,缩小搜索范围,最终查到以下数据:
图片描述
分别对这些数据进行改写查看,获得以下代码段

观察上面的数据,可以发现数据5和数据6是同一段代码,数据7和数据8也是同一段代码,所以我选择充这里作为切入点(其实其他代码也是可以的,只是我直觉这里应该比较好分析)
3、OD 附加(工具:dbg x32.exe),并跳转到选定目标地址:0x7294203F
图片描述
在此处下断点,并且跟进,同时查看堆栈和寄存器数值变化
图片描述
在此处下断,发现数值是在当前CALL 上层修改的,返回到上层代码:
图片描述
这里代码看了一下,发现也有很多下一个的数值,暂时没看出啥,所以返回到函数头部,再次断下,从头不看看哪里数值是比较可疑的
图片描述
查看EDI + 0x84 的数据
图片描述
在此处进行硬件写入断点,再次点击按钮
图片描述
与之前类似,这里的数据也是上层计算得出的,再次向上层回溯,这里省略部分,因为之后的操作和这里类似,上上层回溯,知道跳转到主模块地址处,即
图片描述
以0x0040开始的地址,一般在此处可能会进行值的判断,弹窗之类的
图片描述
在这里附近查看代码,也可以断下后调试,查看执行过程,我这里使用绘制功能直观展示它的执行流程
图片描述
尝试修改代码:
图片描述
修改后的效果:
图片描述
出现了一个对话框,这个字符串应该就是flag

高高兴兴去填写答案,打脸来的太快,答案是错误的,在分析一下字符串
DeZmqMUhRcP8NgJgzLPdXa
看起来图像Base64 加密的,试一下解密,呵呵,打脸虽迟但到
然后冥思苦想,突然顿悟(其实是看了别的博客思路)
居然是Base58,。。。。。
图片描述
OK,解码,获取flag 提交。

PS:如果你使用的OD, 那直接搜索字符串就可以找到这条数据,当然,dbg也是可以搜索到的,但是与之一起的还有N 多条其他字符串

PS2: 这里是我自己分析的这个程序的算法代码的位置,自己没太懂,求大佬讲解一下这里算法实现


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-6-18 00:23 被tutuj编辑 ,原因: 修改错误
收藏
免费 3
支持
分享
最新回复 (4)
雪    币: 6078
活跃值: (5485)
能力值: ( LV5,RANK:65 )
在线值:
发帖
回帖
粉丝
2
长知识了,说真的,我还是第一次听说BASE58.....
2020-6-18 08:27
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
666
2020-6-18 19:38
0
雪    币:
活跃值: (35)
能力值: ( LV3,RANK:10 )
在线值:
发帖
回帖
粉丝
4
kankan 
2020-6-19 10:33
0
雪    币: 467
活跃值: (3827)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
我记得我做这个题目的时候 直接写了一个模拟按键程序,然后点击1w下出来了弹窗  哈哈哈 
2020-6-22 09:51
1
游客
登录 | 注册 方可回帖
返回
//