首页
社区
课程
招聘
[原创]第一题
2019-3-14 10:37 2514

[原创]第一题

2019-3-14 10:37
2514

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


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

最后于 2019-3-14 10:38 被晴雯晴雯编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回