首页
论坛
专栏
课程

[原创]第一题

2019-3-14 10:37 489

[原创]第一题

2019-3-14 10:37
489

2018.3.11

新手

首先可以看到输入后有一个MessageBox提示

 


使用x64dbg加载程序

搜索字符串

 

 

看到是调用了一个信息框,在这里下断点

bp MessageBoxA

查看调用堆栈

 

 

cm.sub_4017B0+1D里的代码是输入不正确密码后进程退出

 

而cm.0040187F代码的附近可以看到一个字符串KanXueCTF2019JustForhappy

一开始以为这就是flag,这么简单,结果发现不是。

但这里的strcmp显然是进行了字符串判断

jne cm.40187A调用了call cm.sub_4017B0

 

子程序4017B0就提示了错误信息。

而如果字符串正确,调用call 401770

 

提示恭喜 pass的信息框。

那么,显然KanXueCTF2019JustForhappy在strcmp之前被压入栈是一个参数,那么我们在这里下断点。

输入KanXueCTF2019JustForhappy,断下

 

可以看到cmp的一个参数是KanXueCTF2019JustForhappy,而另一个是等长的字符串。经过输入不同的密码,我们发现,ECX的内容是我们输入的,但是经过了加密。

现在就是要找输入什么字符串可以加密为KanXueCTF2019JustForhappy。

采用内华达穷举法,j0rXI4bTeustBiIGHeCF70DDM经过加密可以得到KanXueCTF2019JustForhappy,即flag{j0rXI4bTeustBiIGHeCF70DDM}。

 

后记:

其实可以逆向加密函数得到加密算法,但是比较需要技术,我不会。

对应关系

abcdefghiABCDEFGHIJKLMNjklmn0123456789opqrstuvwxyzOPQRSTUVWXYZ

0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ



[公告][征集寄语] 看雪20周年年会(12.28上海) | 感恩有你,一路同行

最后于 2019-3-14 10:38 被晴雯晴雯编辑 ,原因:
最新回复 (0)
游客
登录 | 注册 方可回帖
返回