黑盒加密类RE题目的一种爆破解法
有些程序针对任意输入都有密文格式的输出,题目中给出密文求输入的明文 类似黑盒情况下的crypto题目
题目加密往往采用现代密码的方法,整个逻辑难以阅读
这个题目对输入密钥的校验比较简单,只是一个0x1F异或再对比的方式,
程序从flag.txt中读入明文,并使用密钥加密后以十六进制存放如enflag.txt中
密文
尝试使用flag{ 字符串加密后发现密文和题目密文的前几字符相同
尝试使用flaa{ 字符串加密后发现除了第二个a对应的密文外其他密文和题目密文的前几字符相同
每个字符生成的密文和前一字符无关
打印所有可显示ascii字符并依次循环加密通过制作成彩虹表
.版本 2 .支持库 spec .支持库 eAPI .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 .局部变量 i, 整数型 .局部变量 j, 整数型 .局部变量 f, 文本型, , "20" .局部变量 a, 文本型 .局部变量 flag, 文本型 .计次循环首 (取文本长度 (编辑框1.内容), i) flag = “” 延迟 (1000) a = 取文本中间 (编辑框1.内容, i, 1) 输出调试文本 (a) .计次循环首 (30, ) flag = flag + a .计次循环尾 () 写到文件 (“C:\Users\80597\flag.txt”, 到字节集 (flag)) 加密 () 延迟 (1000) 编辑框2.加入文本 (#换行符 + 到文本 (字节集_字节集到十六进制 (读入文件 (“C:\Users\80597\enflag.txt”))) + “ ” + a) .计次循环尾 () .子程序 加密 模拟按键 (#键1, , ) 延迟 (200) 模拟按键 (#回车键, , ) 延时 (200) 置剪辑板文本 (“[Warnning]Access_Unauthorized”) 鼠标_单击 (取鼠标所在窗口句柄 (), , , 2) 模拟按键 (#回车键, , )
导数第二行为题目所给密文,最后按字符对照上表得到flag
这种解法的优点是不需要太强的伪代码阅读能力
缺点是需要对程序运行逻辑作出一个大概的判断