android逆向修改small代码弹出flag
相关题目参考攻防世界——ph0en1x-100
拿到这个题,没有任何提示,那我们还是先运行走一遍,看看运行的机制
还是这种熟悉的界面,一看还是输入flag,我们的目的就是**flag
那我们就直接反汇编一下
找到关键点
发现这是有调用native层的方法,一个是用encrypt加密,一个是在个getflag中,只要两个字符串相同就可以。但是这聊个字符串都会经过相同的加密,因此我们可以直接比较两个字符串。
后面这个是我们输入的字符串,前面一个是系统加密比较的对象,因此我们可以想办法获取用来比较的字符串
getFlag函数的返回值即是flag密文,简单的方法是apktool解包修改smali并回编译。
修改此处Toast显示值为getFlag返回值,如下:
只需注释const-string一句,并将前面获取getFlag值的语句复制至此即可。签名并安装,点击GO按钮Toast即显示Flag密文。
修改后的java代码是这样的,
这样就可以弹出加密后的flag
这是后就可以看看encrypt里面干了什么事情
实际上加密就是把flag每一位减去一位,那我们还原就直接加一位就可以的到我们的flag了
flag{Ar3_y0u_go1nG_70_scarborough_Fair}