我们拿到文件,第一步还是查壳,查壳的目的主要是提取一些关键信息
我们可以看到该文件不是exe文件或者dll文件,只是一个文本,我们我们以记事本的形式打开文件
打开后发现,里面是地址(0040080那一列)+ 后面的十六进制组合
我们把地址给删除掉得到下面的一串十六进制
68 66 6C 00 00 48 BF 01 00 00 00 00 00 00 00 48
8D 34 24 48 BA 02 00 00 00 00 00 00 00 48 B8 01
00 00 00 00 00 00 00 0F 05 68 61 67 00 00 48 BF
01 00 00 00 00 00 00 00 48 8D 34 24 48 BA 02 00
00 00 00 00 00 00 48 B8 01 00 00 00 00 00 00 00
0F 05 68 7B 70 00 00 48 BF 01 00 00 00 00 00 00
00 48 8D 34 24 48 BA 02 00 00 00 00 00 00 00 48
B8 01 00 00 00 00 00 00 00 0F 05 68 6F 70 00 00
48 BF 01 00 00 00 00 00 00 00 48 8D 34 24 48 BA
02 00 00 00 00 00 00 00 48 B8 01 00 00 00 00 00
00 00 0F 05 68 70 6F 00 00 48 BF 01 00 00 00 00
00 00 00 48 8D 34 24 48 BA 02 00 00 00 00 00 00
00 48 B8 01 00 00 00 00 00 00 00 0F 05 68 70 72
00 00 48 BF 01 00 00 00 00 00 00 00 48 8D 34 24
48 BA 02 00 00 00 00 00 00 00 48 B8 01 00 00 00
00 00 00 00 0F 05 68 65 74 00 00 48 BF 01 00 00
00 00 00 00 00 48 8D 34 24 48 BA 02 00 00 00 00
00 00 00 48 B8 01 00 00 00 00 00 00 00 0F 05 68
7D 0A 00 00 48 BF 01 00 00 00 00 00 00 00 48 8D
34 24 48 BA 02 00 00 00 00 00 00 00 48 B8 01 00
00 00 00 00 00 00 0F 05 48 31 FF 48 B8 3C 00 00
00 00 00 00 00 0F 05
那么我们先试着最简单的破解密码,也就是将该文本转化成ASCII,可以自己写脚本也可以去网上找网上在线转码的,我这里是用网上的(懒)https://www.bejson.com/convert/ox2str/
得到一串字符串还有乱码
hflHH躂HhagHH躂Hh{pHH躂HhopHH躂HhpoHH躂HhprHH躂HhetHH躂Hh}
HH躂HH1쀀
这时候我们就可以想到只提取里面的字符串
自己写一个脚本,提取出字符串以及“{” 和 “}”这两个符号
flag = "hflHH躂HhagHH躂Hh{pHH躂HhopHH躂HhpoHH躂HhprHH躂HhetHH躂Hh}HH躂HH1쀀"
for i in range(len(flag)):
if((flag[i]>='a' and flag[i]<='z') or (flag[i]>='A' and flag[i]<='Z') or flag[i]=='{' or flag[i]=='}'):
print(flag[i],end="")
我们得到的输出为:
hflHHHhagHHHh{pHHHhopHHHhpoHHHhprHHHhetHHHh}HHHH
在攻防世界提交该flag,但是提示错误,我们再观察一下
发现hflHHHhagHHHh这一串中把H和删除,flag就出现了,那么我们继续改善代码,过滤掉h和H
flag = "hflHH躂HhagHH躂Hh{pHH躂HhopHH躂HhpoHH躂HhprHH躂HhetHH躂Hh}HH躂HH1쀀"
for i in range(len(flag)):
if((flag[i]>='a' and flag[i]<='z') or (flag[i]>='A' and flag[i]<='Z') or flag[i]=='{' or flag[i]=='}'):
if (flag[i] != 'h' and flag[i] != 'H'):
print(flag[i],end="")
得到flag为flag{poppopret},这样总没错了把,但是提交一直是失败
这里其实是一个小坑,把flag{}给删除就可以了,只需要输入poppopret,就正确啦
至此解题完毕