这个ctf怎么解
本帖最后由 s1986q 于 2024-11-5 20:24 编辑//
// Decompiled by Jadx (from NP Manager)
//
package com.ctf.dadroid;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.util.Arrays;
public class MainActivity extends ActionBarActivity {
private void crack(String str) {
char[] b = new char[]{'M', '=', '+', 198, 250, 192, 226, 254, 236, 232, 224, 233, 214, 227, 255, 171, 254, 209, 225, 255, 229, 205, 231, 252, 240, 201, 229, 253, 248, 246, 196, 250, 241, 255, 248, 255, 201, 195, 203, 197, 205, 199, 207, 201, 193, 203, 195, 205, 197, 207, 210};
System.out.println(b.length);
char[] c = str.toCharArray();
int l = c.length;
char m = c;
for (int i = 0; i < l; i++) {
int i2 = (c ^ m) & 255;
m = (char) (m + 1);
c = (char) i2;
}
result(c, b);
}
private void result(char[] cArr, char[] cArr2) {
if (Arrays.equals(cArr, cArr2)) {
Toast.makeText(this, "yes", 1).show();
} else {
Toast.makeText(this, "no", 1).show();
}
}
public void confirm(View view) {
crack(((EditText) findViewById(2131296320)).getText().toString());
}
public boolean onOptionsItemSelected(MenuItem menuItem) {
return menuItem.getItemId() == 2131296321 ? true : super.onOptionsItemSelected(menuItem);
}
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(2130968599);
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(2131558400, menu);
return true;
}
}
这个ctf可以逆推吗 本帖最后由 __▂寒江雪▂__ 于 2024-11-5 21:47 编辑
题目意思是输入的字符串通过一系列计算后,能够和预先给出的char字符一致
这个题关键点在于m值假设是最后一次循环,那最后一次计算是 x ^(x+50)&255= 210,写个0-255的循环爆破能算出来一堆x值,其中一个x值就是循环第一次的m值
那这么多m哪个才是呢?其实这里靠脑子,CTF flag答案一般是以}结尾的, } 的字符值是125 所以猜m是125
有了m的值,爆破flag的每个字符即可
chars =
size = len(chars)
key = []
def crack(index, m):
for x in range(256):
if x ^ (m+index) & 255 == chars:
key.append(chr(x))
index = 0
while index < size:
crack(index, 125)
index += 1
print "".join(key)
结果:0CTF{Bazinga_it's_not_the_real_flag_hahahahahahaha}
emmmm算了半天,好像你走错路了
可以逆推,但你这推出来的是fake flag啊,是0CTF{Bazinga_it's_not_the_real_flag_hahahahahahaha}。
真正的flag藏在你那题的其他地方吧 __▂寒江雪▂__ 发表于 2024-11-5 21:44
题目意思是输入的字符串通过一系列计算后,能够和预先给出的char字符一致
这个题关键点在于m值假设是 ...
谢谢你的回复
页:
[1]