前一段时间去最向往的实验室面试,学长想看一下我的博客,想一想从来都是从网上看别人的,自己也没写过什么,挺不好意思的,以后有时间就码一些上来吧~今天先写几个简单的,0ctf里算外算拿了大概600分?全队1/3的分数哦~~
SimpleAPK
这一题开始就是一个干扰项,看flag内容就知道肯定不是这个。标准步骤肯定是先反编译,放在dex2jar里面跑一下,然后jd-gui看一下程序的逻辑,获取输入值进行比较。
一开始反编译的时候看到了libantidebug.so,按照一贯思路应该debug一下的,但是看到这个纠结了一下,当时还想用Intel64的那个安卓平板调试来着233。
后来看了一下Manifest,文件中的Application标签包含属性android:debuggable="true",这就好像暗示了这一题要动态调试解决。
那就上IDA6.6,在v7变量上下断点,直接就看到flag了。
VEZEL
这题比较简单,也是先看核心算法,
然后发现是求crc和签名,直接用几行代码另外写了个apk搞定了。
PackageManager localPackageManager = getPackageManager();
int i=0;
try {
i = localPackageManager.getPackageInfo("com.ctf.vezel", 64).signatures[0].toCharsString().hashCode();
} catch (NameNotFoundException e1) {
// TODO Auto-generated catch block
i=-1;
e1.printStackTrace();
}
TextView textView=(TextView)this.findViewById(R.id.text1);
long l=0;
try {
l = new ZipFile("/sdcard/1.apk").getEntry("classes.dex").getCrc();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
textView.setText("0CTF{" + String.valueOf(i) + l + "}");
BabyQuine
这题看懂了意思之后开始搜索,在wiki上找到了线索,然后就找到了c perl rb python2的代码,然后就直接跑过去了。再接着就花了一下午时间看Quine那一题,试图改代码兼容Python2和3,最后没有成功%>_<%