【CTF】61dctf - androideasy

0x01 题目描述

0x02 题解

这道题也是个apk,很尴尬的是我安装不上,不知道究竟是为什么。。那直接拖进jeb看看能否反汇编

成功反汇编成java代码

package com.a.sample.androidtest;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View$OnClickListener;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private EditText editText;
    private byte[] s;

    public MainActivity() {
        super();
        this.s = new byte[]{113, 123, 118, 112, 108, 94, 99, 72, 38, 68, 72, 87, 89, 72, 36, 118, 100, 78, 72, 87, 121, 83, 101, 39, 62, 94, 62, 38, 107, 115, 106};
    }

    public boolean check() {
        boolean v2 = false;
        byte[] v0 = this.editText.getText().toString().getBytes();
        if(v0.length == this.s.length) {
            int v1 = 0;
            while(v1 < this.s.length) {
                if(v1 >= v0.length) {
                    break;
                }

                if(this.s[v1] == (v0[v1] ^ 23)) {
                    ++v1;
                    continue;
                }
                else {
                    return v2;
                }
            }

            v2 = true;
        }

        return v2;
    }

    protected void onCreate(Bundle arg4) {
        super.onCreate(arg4);
        this.setContentView(2130968603);
        this.editText = this.findViewById(2131427415);
        this.findViewById(2131427416).setOnClickListener(new View$OnClickListener(this) {
            public void onClick(View arg4) {
                if(MainActivity.this.check()) {
                    Toast.makeText(this.val$context, "You got the flag!", 1).show();
                }
                else {
                    Toast.makeText(this.val$context, "Sorry your flag is wrong", 1).show();
                }
            }
        });
    }
}


可以看到当check返回true的话就会得到flag了。
那就看check函数,如果我们输入的字符串的每一位都与23异或后的结果等于s数组中对应的值,那么在全部完成31次后check函数就会返回true
那么很容易逆过来,脚本如下

s = [113, 123, 118, 112, 108, 94, 99, 72, 38, 68, 72, 87, 89, 72, 36, 118, 100, 78, 72, 87, 121, 83, 101, 39, 62, 94, 62, 38, 107, 115, 106]

result = ''

for i in range(len(s)):

    result += chr(int(s[i]) ^ 23)

print result
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,127评论 25 709
  • 文/勿念 01 之前看到过一篇文章,说是人在大学毕业后的两三年,是最孤独无助的时候。 大学毕业后去实习或者出去工作...
    把灯打开阅读 3,923评论 2 8
  • 恰如大海的霞光, 一半在天上, 一半沉海底...
    陈灵溪阅读 2,607评论 0 0
  • “快,传球,传球!” “笨,挡拆啊!” “防住这球,冒他......” 篮球场上,几名年轻人来回奔跑,挥洒着汗水,...
    上官凯乐阅读 4,048评论 2 5
  • 其实,去年我就想办一个专栏,一天发的东西太多,也会被人厌烦。所以,一天发两栏。 什么内容?先跟大家说:我是个不折不...
    SecretParkBand阅读 2,732评论 0 0

友情链接更多精彩内容