首页
社区
课程
招聘
[原创] 第十二题 破解之道 WriteUp
2018-7-9 18:50 1768

[原创] 第十二题 破解之道 WriteUp

2018-7-9 18:50
1768

Pediy CTF 2018 - 破解之道 WriteUp

这道题难度并不是太大,但是……非常鬼畜= =

 

程序中进行了大量的控制流混淆(类似于LLVM),整理流程如下:

  • 检测是否带参输入
  • 检测参数的长度是否等于30
  • 检测参数中是否含有字符"9"
  • 检测整个字符串的FNV64哈希值
  • 分别检验前9个字符的FNV64哈希值
  • 将字符串以"9"分割成三段
  • 将第二段的字符串加上“.DLL”,作为DLL文件名并加载对应文件
  • 将第三段的字符串作为函数名,从DLL中加载这个函数并执行,参数为(0, 30)
  • 判断函数的返回值是否为负数,若是则成功

首先最简单的部分是爆破ASCII范围内单个字符的FNV64值,得到flag的前9个字符为"KXCTF2018"。
然后5个字符的DLL,最常见的就是NTDLL,不妨假设Flag的已知部分即为“KXCTF20189NTDLL9”。
字符串长度要等于30,也就是只剩下最多14个字符来放函数名,而NTDLL中这样的函数并不多。dumpbin导出函数表,写个脚本筛选长度小于等于14的,再写一个程序一个一个爆破FNV64哈希值。

 

最后得到Flag:

KXCTF20189NTDLL9DbgUiContinue9

话说这样验证真的不会多解吗 = =


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回