实验吧-逆向-该题不简单
程序员文章站
2022-05-15 10:02:29
...
解题链接
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.最后再将上述结果连接在字符串 'aaa@qq.com' 之后构成***
可用python写脚本运行
代码如下
username ——>u
counter ——>c
password——>p
u= "Hello"
c= 0;
p= "aaa@qq.com"
for i in u:
p = p + chr((c + c * ord(i) * ord(i)) % 0x42 + 33)
c = c + 1
print(p)
Python2.7运行
aaa@qq.com!GA0U
得到flag
吾爱**虚拟机链接:
https://www.52pojie.cn/thread-661779-1-1.html
有安装问题可以私聊我~
上一篇: 教你在PHP中实现图片简单上传