writeup_攻防世界_WindowsReserve2
writeup_攻防世界_WindowsReserve2
首先,除了攻防世界的wp以外,网上关于这题的wp我个人都认为不太详细
有as壳,esp定律手动脱壳。
拖入ida,根据功能对函数进行重命名:
锁定关键函数:
①检查输入函数:
②加密函数:
最后一位通过v9和v4加密,存入了v10
进入下一层逻辑:
仔细观察逻辑发现有一个密码表,通过python脚本转化一下:
发现还是经典base64,仔细观察代码逻辑,推测是base64加密函数。
因此,可以对程序的总体流程进行推测:
- 传入加密函数,分奇数偶数位进行加密
- 加密后的内容进行base64编码(结果为reverse+)
然而,对reverse+进行解码却发现解不开。。。这应该是其解码之后的结果无法打印
遂自己写脚本如上,左侧为输出。
然后回到上一层函数
上一层函数的输出为173,235,222,174,199,190
因此可以初步判断本层函数的输入应为12位,由于可能性较少,可以直接正向碰撞,可能性仅仅有12*(10+6)种,直接复刻正向逻辑:
首先,上面的一大串加密逻辑的输出结果只可能是整数0~15
然后使用0~15循环碰撞输出结果,得到的值进行保存,
最终将得到的含有015整数的12位数组反向转化为09、A~F即可
终于搞定了。。。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.