WhaleCTF 逆向篇(上)~
闲来无事,写了几道逆向题目~~
简单记录一下
PE格式
题目描述:
使用PETool打开查看即可,块数目:
时间戳和信息标识:
入口地址:
所以得到flag:BJWXB_CTF{0004h-591D5CCCh-0005B789h-0103h}
Warmup
题目提示:
下载文件使用OD打开,找到关键函数:
经过分析,箭头所指向的应该是输入,然后经过系列变化得到新的值,然后与变量aLdyvlqmzhuyCqQ比较:
编写脚本:
s = "LDYVLQMZHuY:|cQ[^Qyo|cQ{~QYO\\CQ[^/s"
flag = ""
for i in s:
flag += chr(ord(i) ^ 0xE)
print(flag)
得到:
flag:BJWXB_CTF{W4rm_UP_warm_up_WARM_UP!}
app-release
下载发现是apk文件,,,
直接使用工具查看源码:
查看一下,MainActivity.a这个函数:
ok,又是异或~
直接编写脚本:
s = "PXEJPMQFTiS|v`\"#vMDw`KMA3_b~w3o"
flag = ""
for i in s:
flag += chr(ord(i) ^ 0x12)
print(flag)
得到:
flag:BJWXB_CTF{Andr01d_VerY_S!Mple!}
r100(defcamp)
下载文件查看main函数~
进入关键函数:
ok,一个二维数组的东西进行减法~
直接上脚本:
v3 = [['D','u','f','h','b','m','f'],
['p','G','`','i','m','o','s'],
['e','w','U','g','l','p','t']]
flag = ""
for i in range(0,12):
x = ord(v3[i % 3][2 * int(i / 3)]) - 1
flag += chr(x)
print(flag)
得到:
flag:Code_Talkers
逆向练习
下载文件使用ida打开,分析主函数:
要使v8不等于1~
给出字符串,然后根据下标把flag给找出来~
根据分析,下标为:
一共17个,编写脚本:
s = "KfxEeft}f{gyrYgthtyhifsjei53UUrrr_t2cdsef66246087138\\0087138"
v9 = [1,4,14,10,5,36,23,42,13,19,28,13,27,39,48,41,42]
flag = ""
for i in v9:
flag += s[i-1]
print(flag)
得到一个不完整的key~
继续分析,发现:
得到完整的flag:KEY{e2s6ry3r5s8f61024}