题目描述

菜鸡发现Flag似乎并不一定是明文比较的

Solution

按照之前的做法,拿到文件先filebinwalkstrings三板斧,这次没有发现什么有用的信息。

运行程序,程序要要求输入一个字符串,答对后才会进入下一个流程:

008-1.png

我们进入 IDA 打开 Strings 窗口(View → Open Subview → Strings)找到相关字符串:

008-2.png

双击进入,然后列出哪些函数对它有调用:

008-3.png

进入后按 F5 反编译,边看边修改变量名,理解程序逻辑:

008-4.png

该程序有一个字母表437261636b4d654a757374466f7246756e,然后下面是对我们的输入字符串(长度不能大于 17)进行编码操作,如果最后得到的值和字母表相等,则进入display("Success")函数。

我们编写一段 Python 代码来构造题目要的输入(十六进制转 ASCII):

  1. digit_table = "437261636b4d654a757374466f7246756e"
  2. for i in range(0, len(digit_table), 2):
  3. sub_str = digit_table[i:i+2]
  4. my_hex = int(sub_str, 16)
  5. print(chr(my_hex), end="")

运行得到:

  1. CrackMeJustForFun