不一样的flag

IDA打开,f5反编译_main函数

BUUCTF逆向DAY-3[9-12]_main函数

分析可知这是一个走迷宫的程序,v3为一个5*5的迷宫的地图,*为起点,#为终点,路径为flag

BUUCTF逆向DAY-3[9-12]_大小写_02



SimpleRev

IDA64打开,f5反编译main函数,追踪相关函数

BUUCTF逆向DAY-3[9-12]_f5_03

分析可知是把大小写字母​​(v1-39-key[v3%v5]+97)%26+97​

追踪一下与key有关的key1

BUUCTF逆向DAY-3[9-12]_main函数_04

追踪一下与text有关的key3

BUUCTF逆向DAY-3[9-12]_反编译_05

上面的int是小端序 ida默认大端序

然后上脚本梭哈

#python3
import string
key="ADSFKNDCLS"
text="killshadow"
s=""
flag=[]
loop=string.ascii_uppercase

for i in range(0,len(key)):
if ( ord(key[i]) > 64 and ord(key[i]) <= 90 ):
s += chr(ord(key[i]) + 32)
else:
s +=key[i]

for i in range(0,len(text)):
for j in loop:
if ord(text[i])==((ord(j)-39-ord(s[i])+97)%26+97):
flag.append(j)
for i in flag:
print(i,end="")


输入值是大小写字母 而网上的wp都只爆破了小写字母 每个符合的大写字母ascii码加26得到的小写字母也符合

垃圾题目



Java逆向解密

使用​​JD-GUI​​反编译.class文件

BUUCTF逆向DAY-3[9-12]_f5_06

要注意一下java里的符号优先级​​+​​比​​^​​优先级高

直接脚本梭哈

#python3
a=[180, 136, 137, 147, 191, 137, 147, 191, 148, 136, 133, 191, 134, 140, 129, 135, 191, 65]
for i in a:
i^=32
i-=64
print(chr(i),end="")


luck_guy

IDA64打开文件,f5反编译main函数,追踪相关函数

BUUCTF逆向DAY-3[9-12]_python_07

分析可知flag为f1+f2 f2可能经过加密

追踪f1

BUUCTF逆向DAY-3[9-12]_f5_08

f1为​​GXY{do_not_​​ f2中应该有​​}​​ 初始的f2中没有​​}​​ 所以最后的f2应该是加密过的(可能加密了1~3次)

上脚本对f2进行加密

#python3
a=[0x69,0x63,0x75,0x67,0x60,0x6f,0x66,0x7f]
for i in range(3):
for j in range(len(a)):
if j % 2 == 1:
a[j] -= 2
else:
a[j]-=1
print(chr(a[j]),end="")
print("")


最终发现只加密了1次

BUUCTF逆向DAY-3[9-12]_python_09