BUUCTF Reverse 解题记录(二)

第六题:xor

这题较简单。进入main函数:

很明显,找到global字符串即可。

 由于这个字符串中部分不是寻常意义字符,所以不能直接转为一条字符串。但是也没有关系,不影响后面异或操作。异或操作直接通过Python脚本即可获取flag。

p=['f',0x0A,'k',0x0C,'w','&','O','.','@',0x11,'x',0x0D,'Z',';','U',0x11,
'p',0x19,'F',0x1F,'v','"','M','#','D',0x0E,'g',6,'h',0x0F,'G','2','O']
flag='f'
for i in range(len(p)):
    if isinstance(p[i],int):
        p[i]=chr(p[i])
for i in range(1,len(p)):
    flag+=chr(ord(p[i])^ord(p[i-1]))
print(flag)

输出结果为flag{QianQiuWanDai_YiTongJiangHu}。

第七题:helloword

典型“找flag还是安装费劲”。本题是安卓逆向,下载APKIDE(ApkIDE3.1.rar_免费高速下载|百度网盘-分享无限制),然后直奔main函数即可获取flag即可。

 第八题:reverse3

 点入sub_4110BE,发现疑似base64编码的相关操作:

 点入aAbcdefghijklmn,发现base64编码串,没错了:

aAbcdefghijklmn db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
for ( j = 0; j < v11; ++j )
    Destination[j] += j;

看到这里,已经明白了,我们要做的只要每个减去j(j从0到字符串总长度),然后base64解码即可。编写Python脚本如下:

import base64
a="e3nifIH9b_C@n@dH"
flag=""
for i in range(len(a)):
    flag+=chr(ord(a[i])-i)
print(base64.b64decode(flag))

2022.3.2 17:40

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值