第六题: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