题目描述
菜鸡发现Flag似乎并不一定是明文比较的
Solution
按照之前的做法,拿到文件先file
、binwalk
、strings
三板斧,这次没有发现什么有用的信息。
运行程序,程序要要求输入一个字符串,答对后才会进入下一个流程:
我们进入 IDA 打开 Strings 窗口(View → Open Subview → Strings)找到相关字符串:
双击进入,然后列出哪些函数对它有调用:
进入后按 F5 反编译,边看边修改变量名,理解程序逻辑:
该程序有一个字母表437261636b4d654a757374466f7246756e
,然后下面是对我们的输入字符串(长度不能大于 17)进行编码操作,如果最后得到的值和字母表相等,则进入display("Success")
函数。
我们编写一段 Python 代码来构造题目要的输入(十六进制转 ASCII):
digit_table = "437261636b4d654a757374466f7246756e"
for i in range(0, len(digit_table), 2):
sub_str = digit_table[i:i+2]
my_hex = int(sub_str, 16)
print(chr(my_hex), end="")
运行得到:
CrackMeJustForFun