欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 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
有安装问题可以私聊我~