攻防世界-tt3441810

6 篇文章 0 订阅
4 篇文章 0 订阅

我们拿到文件,第一步还是查壳,查壳的目的主要是提取一些关键信息

我们可以看到该文件不是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,就正确啦

至此解题完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值