ISCC RE part 1

ISCC全部RE(第一部分)

先是elf的逆向,拿到题目后发现是64位elf文件,拖进ida分析

123

可以发现唯一的判断函数就是400766这个函数,进去看下

123

先判断s的长度是否为32,然后是个四元一次方程组,s代表的是输入的前四个字节,其余3个似乎是未初始化的变量,于是调试看看,
输入假码后被分成了八组

123

在栈中可以看到分完组的假码

123

找到第一个方程中的乘法运算

123

可以发现这四个未知数就是输入的前四组假码,现在方程就已经有了,直接用z3求解就完事了

123

可以解出前四组,由于解出的是整数,可以发现程序将输入的部分以十六进制的形式进行运算,并且需要注意下端序,然后就可以解出前四组输入

123

然后往下看,就发现又是一个伪随机的方程,伪随机数可以直接去内存里找到,

123

可以看到八个随机数对应方程中的八个变量,然后老样子可以解出方程

123

123

这样就解出了全部输入,构造输入后可以看到flag

123

下面是一道十分简单的mobile,不过我感觉是主办方的失误
下载apk后直接拖入改之理,发现反编译失败
123
切换killer尝试下,可以看到大体上app的结构

123

发现了protect之类的字样,估计是加了保护
以压缩文件打开观察下文件结构,在assets文件夹下发现了十分有趣的东西

123

先看 这个python脚本

123

对jar文件的前112个字节做了与加密,神奇的是,解密后的文件竟然同时给我们了

123

打开其中一个jar发现是dex头,直接放进jeb里看看

123

直接看mainactivity,在一堆神秘的摸不着头脑的操作之后发现了oncreate方法,估计判断就在这个protectmethod函数里
直接去看
123

拿到了flag,还有好几篇存货,都是写在为知笔记里的,等过几天会转到博客里的

123