首页
社区
课程
招聘
[原创]CTF第三题
2017-10-29 23:36 7748

[原创]CTF第三题

2017-10-29 23:36
7748
 

目录

CTF3

基本调试 以及注意事项

修改随机基址,改为固定基址。
先过反调试。至少能输入字符串。为了不改变程序执行流程,只要把jnz该jz就好了。修改反调调试验证函数的返回值。
反调试一定要跟到函数里面看一看,谁知道在函数外边判断钱作者在里面做了什么
IDA + OD发现现输入被重新编码至少两次(后来发现有4次)
图片描述
进入encode函数内部,观察编码逻辑。
图片描述

图片描述
随便使用一段base64字符
QmFzZTY057yW56CB6KaB5rGC5oqKM+S4qjjkvY3lrZfoioLvvIgzKjg9MjTvvInovazljJbkuLo05LiqNuS9jeeahOWtl+iKgu+8iDQqNj0yNO+8ie+8jOS5i+WQjuWcqDbkvY3nmoTliY3pnaLooaXkuKTkuKow77yM5b2i5oiQ
长一点否则两次编码以后长度会急剧缩短,第二次编码以后竟然给编码没了。
之后的反调试我也看了看,没发现做什么手脚所以就直接nop了,而不是修改跳转。

第4轮编码以后

前面几轮编码都是一路过反调试,没意思就不多谈了。
图片描述
图片描述
图片描述
eax=0018E058 "de5909376cf44e85fbb3886506a393022cbc8b3dcbdbc610911b7f12712a9810"
尽然还计算长度,算毛啊64个字节
图片描述
图片描述
试一试将de5909376cf44e85fbb3886506a393022cbc8b3dcbdbc610911b7f12712a9810作为作为输入
此时验证值变为
eax=0018E058 "e1869e48114c9f10c8c997263b8e387dbf9c555c67323d4fa1ba5506882e722a"

 

我突然有一个想法,如果 两个串存放的位置相聚不远那么我输入
xxxxx 会的到bbbbb。我可以输入xxxxxhhhhhhbbbbb,将验证的值覆盖诚bbbbbb,由于发生了截断,他只会发现xxxxxx,对xxxxx做运算得bbbbb。
结果两个值相隔好远啊。这个办法不通。

数学分析

如果输入A1那么自然有B1与之对应。在输入B1有C1与之对应。
而集合是有限的。如果存在有且仅有唯一解,这个解假设为输入D1运算完毕以后依然是D1=F(D1)。那么集合剩下的数子为了不产生x=f(x),只能形成一些或大或小的循环,或者收敛于D1。如果存在唯一D1,接下来就看f(x)如何做到这一点。有点感觉是两个图像在区间上的焦点问题,A(x) = x与B(x)是一个定义域值域都为{Hex64}的有限集合。要找的是两个图像的焦点。知道B(x)满足,B(B(B(….))) – x = 0有且仅有一个解。所以求导,分三种情况讨论....要么逆向算法。要么暴力呵呵。

 

那么狠有可能就是之前计算两次长度哪里有问题。

 

图片描述
果然当我们输入AAAAAAAxxxxxxxxxxxxxxxxxxx的时候。根据其AAAAAAA会计算出一个值
ccccccccccccccccccccc。那么下次我们只要输入AAAAAccccccccccccc的值就好了。
按照前面的分析,想要攻破要么逆向算法,要么暴力,这显然是行不通的。我怀疑这里是作者故意留的。
如果此时就能得到正确答案题目必然会多解。作者为了避免多解不得不在后面做一些验证检查然。此时距离MessageBox函数只有两个函数了。
也就是说为了保证输入唯一,作者必定在接下来的两个函数中对输入做一次验证。

 

接下来输入aaaaaaa
得到432a34a4946708602bdf52a8b556a3c18ff9ab60c346da83579f149c4f366513

 

只要输入aaaaaaa432a34a4946708602bdf52a8b556a3c18ff9ab60c346da83579f149c4f366513就可以通过memcpy的验证。

 

图片描述
果然,这里又来藏了点东西弄了一个除零异常,注册了一个函数。好气啊。除零,
X32Debug放不走除零异常,等等好像x32Debug能放走除零异常我跟过来了。但是好像什么都没做,只是修改了堆栈。
图片描述
这里果然有问题。好烦啊,又是反调试。
图片描述
图片描述
作者代码可能写的又问题。最后连两个函数在我的调试过程中完全没有起到作用。
一路f7竟然过了。这道题肯定多解了。
后来我试了几次,程序在调试的时候单步跟是能过的。运行的有时候有时候不能。单步能过,不但不就过不了。


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 221
活跃值: (2057)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
contain_of 2022-8-7 15:16
2
0
游客
登录 | 注册 方可回帖
返回