【攻防世界】mobile App1 Writeup

44 篇文章 0 订阅
10 篇文章 0 订阅

 这个题目属于最简单的入门级别,但要注意代码里故意交换了versionName和versionCode的赋值。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(0x7F04001B);  // layout:activity_main
        this.btn = (Button)this.findViewById(0x7F0B0058);  // id:checBtn
        this.text = (EditText)this.findViewById(0x7F0B0057);  // id:input
        this.btn.setOnClickListener(new View.OnClickListener() {
            @Override  // android.view.View$OnClickListener
            public void onClick(View v) {
                try {
                    String s = MainActivity.this.text.getText().toString();
                    PackageInfo packageInfo0 = MainActivity.this.getPackageManager().getPackageInfo("com.example.yaphetshan.tencentgreat", 0x4000);
                    String versionCode = packageInfo0.versionName;
                    int versionName = packageInfo0.versionCode;
                    for(int i = 0; i < s.length() && i < versionCode.length(); ++i) {
                        if(s.charAt(i) != (versionCode.charAt(i) ^ versionName)) {
                            Toast.makeText(MainActivity.this, "再接再厉,加油~", 1).show();
                            return;
                        }
                    }

                    if(s.length() == versionCode.length()) {
                        Toast.makeText(MainActivity.this, "恭喜开启闯关之门!", 1).show();
                        return;
                    }
                }
                catch(PackageManager.NameNotFoundException packageManager$NameNotFoundException0) {
                }

                Toast.makeText(MainActivity.this, "年轻人不要耍小聪明噢", 1).show();
            }
        });
    }

versionCode和version Name的值都可以在Manifest中找到,使用下面的代码就可得到flag:

versionName = "X<cP[?PHNB<P?aj"
versionCode = 15
s = ""
for  i in range(len(versionName)) :
    #if(s.charAt(i) != (versionName.charAt(i) ^ versionCode)):
    s += chr(ord(versionName[i]) ^ versionCode)
    
print(s)

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值