JQCTF wp
JQCTF re复现
第一题-writeup-customize-vm
这个比赛对我来说还是比较难的,re里这道题稍微简单一点,所以先复现了它。
输入长度50,构造关键逻辑在这里,此处是取输入的字符与一组密文进行异或,func_len中所存的即是每一组密文的长度,而\func_data即是所存储的函数(加密之后的),那么就是一个smc了,input只要能满足正常解密出所有的函数逻辑即可
使用解密出的函数做后面的约束
然后这里有点卡了,看了别人的wp后才懂了,只要能fuzz出那个满足正常异或出函数逻辑的输入即可,单字节的一个爆破,翻看一下待解密的模块,找到一点小技巧,0异或一个字节是那个字节本身,那么正确的字节是0的话异或目标字节就会是那个字节,就像下面这块,有连续的z出现,那么目标字节大概率就是z。
输入z之后修一下,成功修复,找一下规律,每个函数最后的retn就是最好的标志
写个脚本fuzz一下,retn对应的字节码是c3,手动替换一下bytes_array。
脚本
1 | |
跳转测试
第一题
— END —