实验吧-逆向-该题不简单
2017-11-30 23:09
190 查看
解题链接
http://www.shiyanbar.com/ctf/14
![](https://img-blog.csdn.net/20171130230340191?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
直接下载,我是拖到虚拟机中(xp,吾爱破解版,文章最后附上链接),先随便输入用户名注册码,得到密钥无效!然后就可以根据密码无效用IDA pro x86搜索
![](https://img-blog.csdn.net/20171130230437112?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20171130230454938?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
看到如下图所示的,密钥无效
![](https://img-blog.csdn.net/20171130230515010?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在左侧看出这个调用了 : sub_4011D0
分析可知道,当返回值不为 0 的时候 , 就跳转到 密钥无效 的分支
转到 sub_4011D0
直接 f5 反编译为 C代码
(f5得看版本,64和32如果和程序不对应得情况,f5失效)
![](https://img-blog.csdn.net/20171130230536767?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20171130230546603?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
c语言代码可以读得懂,这段代码会将
可用python写脚本运行
代码如下
username ——>u
counter ——>c
password——>p
Python2.7运行
Happy@!GA0U
![](https://img-blog.csdn.net/20171130230610205?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRXZlcnl3aGVyZV93d3g=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
得到flag
吾爱破解虚拟机链接:
https://www.52pojie.cn/thread-661779-1-1.html
有安装问题可以私聊我~
http://www.shiyanbar.com/ctf/14
直接下载,我是拖到虚拟机中(xp,吾爱破解版,文章最后附上链接),先随便输入用户名注册码,得到密钥无效!然后就可以根据密码无效用IDA pro x86搜索
看到如下图所示的,密钥无效
在左侧看出这个调用了 : sub_4011D0
分析可知道,当返回值不为 0 的时候 , 就跳转到 密钥无效 的分支
转到 sub_4011D0
直接 f5 反编译为 C代码
(f5得看版本,64和32如果和程序不对应得情况,f5失效)
c语言代码可以读得懂,这段代码会将
1.用户输入的用户名的每个字符遍历一遍 2.把每个字符的序号(从 0 开始算)与这个字符的ASCII码的平方相乘 3.然后整体再加上序号 4.得到的和继续对 0x42 求余 5.最后将结果加上 33 6.然后再转为ASCII码 7.最后再将上述结果连接在字符串 'Happy@' 之后构成注册码
可用python写脚本运行
代码如下
username ——>u
counter ——>c
password——>p
u= "Hello" c= 0; p= "Happy@" for i in u: p = p + chr((c + c * ord(i) * ord(i)) % 0x42 + 33) c = c + 1 print(p)
Python2.7运行
Happy@!GA0U
得到flag
吾爱破解虚拟机链接:
https://www.52pojie.cn/thread-661779-1-1.html
有安装问题可以私聊我~
相关文章推荐
- windows简单网络命令(实验课上写)
- Android逆向从未如此简单
- 华为交换机简单配置实验
- 网络简单交换机实验
- 编译原理实验一:简单PL/0词法分析器C语言代码
- 数据结构实验之串一:KMP简单应用
- 实验一 实现几个简单的c++程序
- 360安全卫士hookport.sys简单逆向
- 实验1-简单的C++程序
- 数据结构实验之串一:KMP简单应用
- 一个简单函数strlen的逆向
- 组播RPF 逆向路径转发 实验原理
- 算法逆向第1篇——简单算法逆向
- DNS-实验1_简单配置和主从DNS
- 一道movfuscator混淆过的简单逆向
- 简单的路由重分布实验(rip和ospf重分布)
- 20145314郑凯杰《网络对抗技术》实验1 逆向及Bof基础实践
- 简单理解与实验生成对抗网络GAN
- Goole CTF 比赛 逆向组 Moom.exe 的逆向过程简单分析
- 数据结构实验之串一:KMP简单应用