题目地址:
https://app.hackthebox.com/challenges/301
题目简介的意思是这个程序使用了加密来保护密码
下载完程序后,我尝试使用ida来静态分析,可是ida无法打开程序
把程序拖入die分析,也没看到什么加密方式
然后我用strings查看一下程序内部的字符串
没能找到什么有用的字符串
然后我使用r2来动态分析程序,发现了一个可疑的地方
在main函数的末尾是用ud2指令结束的,正常程序的结尾一般都是pop和ret,弹出和返回,可这里不一样,我查阅了x86手册后发现
此指令用于软件测试以显式生成无效操作码。该指令的操作码是为此目的而保留的。
除了引发无效操作码异常外,该指令与 NOP 指令相同。
知道了问题所在,现在就该解决问题了,我们可以使用NOP指令来替换 UD2 指令
NOP的指令为:0x90
UD2的指令为:0x0f 0x0b
我们可以使用bbe工具来替换指令
bbe -e 's/\x0f\x0b/\x90\x90/g' behindthescenes > new
然后用r2来动态调试这个新生成的程序
可以看到,这里main函数多了很多的指令,也在字符串列表看到了程序的密码
密码为:Itz_0nLy_UD2