61dctf - androideasy

0x01 题目描述

0x02 题解

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

成功反汇编成java代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
那么很容易逆过来,脚本如下

1
2
3
4
5
6
7
8
9
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

本文标题:61dctf - androideasy

文章作者:Pino-HD

发布时间:2018年06月10日 - 16:06

最后更新:2018年06月10日 - 16:06

原始链接:https://pino-hd.github.io/2018/06/10/61dctf-androideasy/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!