首页
社区
课程
招聘
[原创]第四题 密界寻踪
2018-6-22 21:59 2236

[原创]第四题 密界寻踪

2018-6-22 21:59
2236

一个Windows32位程序逆向。

 

IDA简单分析一下,得知输入长度小于等于0x17,并且前三位是数字。

 

整体的流程分两步,先是0x402630,对第4位到最后的输入验证,然后是0x402D60,验证前三位。

 

strings之后发现有大数库miracl,标一标发现是把输入和一些常数做powmod,再经过一些处理做strcmp,那么实际上就是RSA。动态调试拿到几个参数,发现N可以分解,直接解出后20位为iamahandsomeguyhaha1。看来输入长度恰好是0x17。

 

一些操作流程:

>>> n = 0x7da39de66016477b1afc3dc8e309dc429b5de855f0d616d225b570b68b88a585
>>> y = 1001
>>> hex(pow(0x31, 1001, n))
'0x341faae70a3ee3e43834da01347f38c0a14b738a0175fb5e9488023ddd5f6f69L'
>>> n
56828191929550499896142468009756520490526164668720784286547535509684830643589L
>>> p = 208096057845685678782766058500526476379, q= 273086345401562743300402731618892888991
  File "<stdin>", line 1
SyntaxError: can't assign to literal
>>> p = 208096057845685678782766058500526476379; q= 273086345401562743300402731618892888991;
>>> p
208096057845685678782766058500526476379L
>>> q
273086345401562743300402731618892888991L
>>> d = 2e70a649e6a648f78a9d2c1074a7d51f0099c13f7f9bcbb78bad2c1b1b1d96f1
  File "<stdin>", line 1
    d = 2e70a649e6a648f78a9d2c1074a7d51f0099c13f7f9bcbb78bad2c1b1b1d96f1
                                                                       ^
SyntaxError: invalid syntax
>>> d = 0x2e70a649e6a648f78a9d2c1074a7d51f0099c13f7f9bcbb78bad2c1b1b1d96f1
>>> z = 0x208CBB7CD6ECC64516D07D978F5F0681F534EAD235D5C49ADD72D2DB840D5304
>>> pow(z,d,n)
601616731606062377067631775469716020478784069937L
>>> hex(pow(z,d,n)
... )
'0x69616d6168616e64736f6d656775796861686131L'
>>> from pwn import *
>>> unhex('69616d6168616e64736f6d656775796861686131')
'iamahandsomeguyhaha1'

前三位的验证通过搜常数就可以发现是一个AES,搜了一会儿没搜到类似的源代码,想想还是直接爆破算了,毕竟只有1000种可能。

for /L %%a in (0,1,9) do @for /L %%b in (0,1,9) do @for /L %%c in (0,1,9) do @echo %%a%%b%%ciamahandsomeguyhaha1 | .\cm4bak.exe

输出重定向到result.txt中,搜到success在1045行,故前三位为是(1045-5)/2=520

 

最后结果为520iamahandsomeguyhaha1


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

最后于 2018-6-22 23:04 被diycode编辑 ,原因:
上传的附件:
收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回