-->
当前位置:首页 > DayDayUp > 正文内容

黑盒加密类RE题目的一种爆破解法

Luz5年前 (2020-04-07)DayDayUp4555

有些程序针对任意输入都有密文格式的输出,题目中给出密文求输入的明文  类似黑盒情况下的crypto题目

题目加密往往采用现代密码的方法,整个逻辑难以阅读

image.png

这个题目对输入密钥的校验比较简单,只是一个0x1F异或再对比的方式,

程序从flag.txt中读入明文,并使用密钥加密后以十六进制存放如enflag.txt中

image.png

密文

尝试使用flag{ 字符串加密后发现密文和题目密文的前几字符相同

尝试使用flaa{ 字符串加密后发现除了第二个a对应的密文外其他密文和题目密文的前几字符相同

每个字符生成的密文和前一字符无关

打印所有可显示ascii字符并依次循环加密通过制作成彩虹表

  1. .版本 2
  2. .支持库 spec
  3. .支持库 eAPI
  4.  
  5. .程序集 窗口程序集_启动窗口
  6.  
  7. .子程序 _按钮1_被单击
  8. .局部变量 i, 整数型
  9. .局部变量 j, 整数型
  10. .局部变量 f, 文本型, , "20"
  11. .局部变量 a, 文本型
  12. .局部变量 flag, 文本型
  13.  
  14. .计次循环首 (取文本长度 (编辑框1.内容), i)
  15.     flag  “”
  16.     延迟 (1000)
  17.  
  18.     a  取文本中间 (编辑框1.内容, i, 1)
  19.     输出调试文本 (a)
  20.     .计次循环首 (30, )
  21.         flag  flag  a
  22.     .计次循环尾 ()
  23.     写到文件 (“C:\Users\80597\flag.txt”, 到字节集 (flag))
  24.     加密 ()
  25.     延迟 (1000)
  26.     编辑框2.加入文本 (#换行符  到文本 (字节集_字节集到十六进制 (读入文件 (“C:\Users\80597\enflag.txt”)))     a)
  27.  
  28. .计次循环尾 ()
  29.  
  30. .子程序 加密
  31.  
  32. 模拟按键 (#键1, , )
  33. 延迟 (200)
  34. 模拟按键 (#回车键, , )
  35. 延时 (200)
  36. 置剪辑板文本 (“[Warnning]Access_Unauthorized”)
  37. 鼠标_单击 (取鼠标所在窗口句柄 (), , , 2)
  38. 模拟按键 (#回车键, , )

image.png

导数第二行为题目所给密文,最后按字符对照上表得到flag

这种解法的优点是不需要太强的伪代码阅读能力

缺点是需要对程序运行逻辑作出一个大概的判断

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。