攻防世界mobile第一题

攻防世界mobile第一题

  1. 模拟器打开apk文件
    在这里插入图片描述

  2. 用jeb反汇编出这个apk文件

  3. 查看MainActivity.java文件
    在这里插入图片描述查看BuildConfig.java文件:
    在这里插入图片描述

  4. 源码分析
    str1为用户输入框输入的字符串;
    str2为全局变量version_name,值为X<cP[?PHNB<P?aj
    j为全局变量version_code,值为15
    分析源码可知需满足两个条件才能"恭喜开启闯关之门"
    条件1:str1.charAt(i) == (str2.charAt(i) ^ j)
    即str1的第1位=Xj异或运算后的值,str第2位=<j异或运算,3=c异或j,以此类推
    条件2:str1.length() == str2.length()
    即str1与str2字符串长度相同

  5. 编辑代码得到值为
    在这里插入图片描述

  6. Python代码

if __name__ == '__main__':
    str1 = "X<cP[?PHNB<P?aj";
    j = 15;
    i=0;
    flag='';
    for i in range(len(str1)):
        for strs in range(32,127):
            if strs == ord(str1[i]) ^ j:
                # print(chr(strs));
                flag = flag+chr(strs);
                break;
    print(flag);

以前代码写复杂了,新代码:

if __name__ == '__main__':
    str1 = "X<cP[?PHNB<P?aj";
    j = 15;
    i=0;
    flag='';
    for i in range(len(str1)):
        strs = ord(str1[i]) ^ j;
        flag = flag+chr(strs);
    print(flag);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值