re_rs4

第一次参加国赛决赛,不得不说比赛保障真的很到位,但比赛平台着实拉跨,第一天的AWD完全乱搞,好奇的话可以去看下知乎的评价。比赛第二天又改为解题赛了,本想着re作为混子到线下顶多修补pwn题,但这回带来的电脑没有工具,所以坑队友了。

先说说这次比赛的题目吧,一道是re_rs4一个图形加解密题,一道是re_babyriscv一个是riscv架构的逆向题,riscv至今也没研究出来,先说说re_rs4吧。这道题里面有plt.sec,导致好多函数看起来十分复杂,而且不论静态还是动态都找不到一处最后结果判断的地方。而且题目给你的只有一个output文件,在IDA中又会莫名其妙的看见一个secret文件,唯一有线索的地方是通过findcrypt找到TEA算法。后面就动态调试看看。

image-20201015102430692

要进入if判断首先得在你的当前目录下有一个secret.jpg,并且在执行程序时必须将该程作为参数带入执行,然后在sub_1FE8A函数下有

image-20201015150410958

这个循环就是一个一个字节读入你的secret.jpg内容,再进入到sub_1F3B5,里面有一个大循环,进入大循环后大概就是将secret.jpg内容中看成是一个DWORD数组,然后对你的每个DWORD下标做一个判断,然后将每两个DWORD做小端处理,作为TEA加密的明文,密钥就是你输入的16字节,根据TEA加密形式,它有一个4个DWORD的密钥,这就是你的输入,在main函数中有一个专门的函数他会做一个小端的转化处理

image-20201015164217812

然后会将secret.jpg内容中每两个DWORD大小的内容作为TEA加密的明文

image-20201015165047101

最后就是将你的加密内容输出到output.jpg文件,虽然题目中没有一个明显的比较和判断,但通过正向分析慢慢的理解程序流程,其实难度就在于函数过多且比赛现场没有公网查资料也很难,最后的exp就是一个爆破密钥的过程。但由于key是一个长度为4的DWORD数组,爆破必然费时,所以可以先尝试单字节爆破,假设每个DWORD其实只有一个字节大小。这样最后居然可以爆破成功。最后由于参考了别人的exp就不展示了。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2022 llx-moon
  • Visitors: | Views:

请我喝杯咖啡吧~