BUUCTF逆向DAY-3[9-12]
不一样的flag
IDA打开,f5反编译_main函数
分析可知这是一个走迷宫的程序,v3为一个5*5的迷宫的地图,*为起点,#为终点,路径为flag
SimpleRev
IDA64打开,f5反编译main函数,追踪相关函数
分析可知是把大小写字母(v1-39-key[v3%v5]+97)%26+97
追踪一下与key有关的key1
追踪一下与text有关的key3
上面的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文件
要注意一下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函数,追踪相关函数
分析可知flag为f1+f2 f2可能经过加密
追踪f1
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次