【攻防世界】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)

攻防世界Shuffle是一个在攻防世界平台上的题目,属于Reverse(逆向工程)类别的进阶区的题目。该题目的具体来源是SECCON-CTF-2014比赛。题目要求参与者找到一个字符串在随机化之前的顺序。关于该题目的详细解法可以在提供的博客链接中找到。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [攻防世界 Shuffle](https://blog.csdn.net/afanzcf/article/details/119462993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [攻防世界Wire1杂项](https://download.csdn.net/download/m0_59188912/87097386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [攻防世界Reverse进阶区-Shuffle-writeup](https://blog.csdn.net/qq_35056292/article/details/108676766)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值