您的位置:首页 > 其它

实验吧-逆向-该题不简单

2017-11-30 23:09 190 查看
解题链接

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

有安装问题可以私聊我~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息