周六忘了比赛,晚上快六点才拿到题目,看了下感觉能做,研究了下,最后还是可惜,比赛结束了 拿到题目ida打开惯例看一下main 再看看汇编 基本上确定是ollvm了 下面那一堆整齐的是真实块,上面通过分发器跳转才到达真实块执行代码。看到群里有大佬直接通过动调跳转找代码的,那确实是真功夫...脚本小子直接拿deflat.py还原了。 建议放虚拟机里面,装GitHub页面推荐的angr版本 脚本还原之后的样子 这个时候f5已经可以看了 PART1 先看看第一部分的代码,前面到qmemcpy的代码是正常的分配内存和输入输出。后面进行了很长一堆的运算,其实都不用看,其实可以分析出来,前面都是静态的拿现有的进行操作,最后都给了v20,直接断在59行然后拿出v20就行了。 59行之后是一个flag格式比对,把flag里面的内容截取出来放到v22里面 PART2 我们先不看400670这个函数,先看看后面的东西,做游戏题比较多的应该很容易就能看出来这是个迷宫了,拿400670函数对flag内容处理后的数据逐位进行操作(也就是迷宫里面的上下左右)这边其实故意搞复杂了点,把上下弄成加减100,然后

CTF 2022-05-09