首页
论坛
课程
招聘
雪    币: 2503
活跃值: 活跃值 (16)
能力值: ( LV15,RANK:1033 )
在线值:
发帖
回帖
粉丝

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

2018-7-9 18:50 858

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

2018-7-9 18:50
858

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

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



[公告]看雪论坛2020激励机制上线了!多多参与讨论可以获得积分快速升级?

最新回复 (0)
游客
登录 | 注册 方可回帖
返回