首页
社区
课程
招聘
[原创]看雪.京东 2018CTF 第四题 密界寻踪
2018-6-22 19:25 3691

[原创]看雪.京东 2018CTF 第四题 密界寻踪

2018-6-22 19:25
3691

常规做法,拿到程序后,拖到IDA Pro,由于没有壳,可以找到许多有用的信息。使用findcrypt-yara插件,可以找到AES算法中使用到的常数。再查看一下字符串,可以确定使用了MIRACL库。

 

用条件跳转指令对main函数的入口做了一点混淆,手动改好即可。

 

为了更好的利用IDA Pro的反汇编功能,可以使用keypatch插件将main函数的入口修复的一下。

 

在其他的地方,使用call指令进行了混淆,例如0x00402580出的函数,同样的,修复一下。就可以用F5了。

我们可以做的更好,使用nop将这一段垃圾指令清楚掉,然后用F5。

利用这个函数,可以解析出一些字符串。

serial:
success
error
912CA2036A9A0656D17B6B552F157F8E
0001314000000000
208CBB7CD6ECC64516D07D978F5F0681F534EAD235D5C49ADD72D2DB840D5304
7da39de66016477b1afc3dc8e309dc429b5de855f0d616d225b570b68b88a585

剩下的工作就没有什么技巧可言了,对照MIRACL库,将用到的函数标注出来,可以发现其验证流程。

 

验证分为两部分,输入的前三个字符,作为AES密钥的一部分,使用ECB模式,加密字符串pediy(需要补0),其结果与912CA2036A9A0656D17B6B552F157F8E对比。

 


上图中arg0即为输入的前三个字符,有一个全局变量dword_495728不用管他,反正密钥本身也需要破解三个字符。爆破出来密钥是5211314000000000。所迷密钥的前三个字符为52#,#不确定。

 

剩下的字符,先做一个hex编码,然后变成一个大整数,用RSA来验证

n可以使用factordb.com分解

p =  208096057845685678782766058500526476379
q =  273086345401562743300402731618892888991

然后可以通过RSA解密出来明文为69616d6168616e64736f6d656775796861686131。hex解码一下就是iamahandsomeguyhaha1

 

所以flag为520iamahandsomeguyhaha1。其中第三个字符一猜就是'0'啦。

 

做这个题需要找出使用的库,否则去逆库函数的话,需要花的时间太多了。

 

美男子,惹不起,惹不起O(∩_∩)O


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

最后于 2018-6-22 19:30 被iweizime编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (2)
雪    币: 4
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
JuicyBoy 2018-7-1 01:22
2
0
请问一下“使用keypatch插件将main函数的入口修复”这个怎么做呢
雪    币: 930
活跃值: (1288)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
iweizime 7 2018-7-2 11:05
3
0
JuicyBoy 请问一下“使用keypatch插件将main函数的入口修复”这个怎么做呢
就把用跳转混淆的那几条指令写到main函数的开头就行了啊
游客
登录 | 注册 方可回帖
返回