先吐槽一下,比赛题目质量一般,技巧题太多,各种原题和网上能搜到的。开始的选择题也是,概念混淆题目,简直不像是专业比赛。

第二部分就是解密逆向题目,共30道,部分题目下载 http://pan.baidu.com/s/1eQudFyi 密码 wphu

里面只有 zip 才是,其余的文件是我解压后的或者分析的结果。

没写的题就是不会或者没有把文件留下来。所有的 exe 逆向都没做,主要用 Mac,没工具。

先简单的写的,还在补充。

第四题,看文本中中的字符串,前几位是 png 的文件头格式,然后复制所有的字符到16进制编辑器保存为 png 格式,然后得到一个二维码,扫描结果是号外!号外!山东省大学生信息安全知识大赛开始了!!!! AAB aaaaa aaa ABB baaa aaa ABBB bbaaa aaa BB bbbbb。按照摩尔斯电码处理,A是- B 是.,字母的大小写表示 key 的大小写。 key

第五题,apk 逆向,解压得到 class.dex,使用 dex2jar 命令逆向得到 jar 包,解压后得到一堆 Java classes 文件,我是使用的 Idea 反编译,命令行也有工具,下面是部分代码

private void operatecontext() {
        this.abc = this.exit.getText().toString();
        if(this.checkansaw(this.abc) == 1) {
            this.msg.setText("恭喜你!答对了!");
        } else {
            this.msg.setText("很遗憾!答错了");
        }
    }

    private String productanswer() {
        return "" + 'T' + 'h' + 'e' + 'a' + 'n' + 's' + 'w' + 'e' + 'r' + 'i' + 's' + 'n' + 'o' + 't' + 'h' + 'e' + 'r' + 'e';
    }

但是明显不是 flag,后来发现res/raw/good boy,是一个纯文本的,内容是#KEY{SV9sMHZlX2NURg},好吧。

第六题,wireshark 能看到 zip 的传输,foremost 解包后得到加密后 zip,然后不会了。

第八题,idf 原题,strings 3.jpg | grep KEY就能看到。

第九题,js fuck,贴到浏览器的控制台运行一下就好了。

第十一题,一个 pcap 文件,使用 wireshark,发现有 zip 文件的传输,其实这种情况使用 binwalk 或者 foremost 解压就行,然后在 winrshark 最后一个请求里面能看到QQ20151101-0@2x.png

第十二题,一堆乱七八糟的符号,然后提取里面的字母数字符号就行,我是写的下面的程序分析和提取的,

# coding=utf-8

f = open("key.txt", "r")
content = f.read()
r = set(content)
print r, len(r)
t = ""
for item in content:
    if item in "'EF032=GMQSUOWVYZcedfkjmlTNyxz5'":
        t += item
print t

第十三题,+ADwAcwBjAHIAaQBwAHQAPgBhAGwAZQByAHQAKAAiAEsARQBZAHsAYQA2ADYAYwA3ADEAZQBjADcANAA4AGQAYwAwADkAZQA4AGIANgBhAGMAMgBmAGYAYQAzADgANQA0ADMAYwA1AH0AIgApADwALwBzAGMAcgBpAHAAdAA+-使用 utf-7解码,在这里可以解码 http://toolswebtop.com/text/process/decode/UTF-7。

第十四题,16进制转 ASCII 得到KYdf0a3ebd5c4dc160-E{fb63ee0298b8f4d8},看样子是以-为分隔交错的,自己处理下就好。

第十六题,文本内容是key{e10adgc3949ba5k9abbje56le0m57f2n0f8z83e},然后我们学校美女黑客口算的,是123456的 md5,中间加了几位没用的。

第十八题,foremost 解包后能看到一个二维码,但是很坑的是网上的二维码在线扫描都扫不出来,现场又不让用手机。晚上回来后用微信扫了一下是一个 Bing的链接,url 中有个 key 的 base64 编码。

第十九题,图片 exif 中有个长字符串,先 16进制的 ASCII 解码,然后 base64就好了。

第二十题,这个有些坑了,这是国外的一个 ctf 的原题,https://ctf-team.vulnhub.com/hackim-2015-forensics-300/,但是坑就坑在这个 flag 并不是 key,得到 key 只需要用strings brave | grep KEY就好了。

第二十二题,idf 原题,crc32,http://blog.csdn.net/u010379510/article/details/44596603

第二十四题,apk 反编译的,然后在 MainActivity.class 反编译代码中直接能看到 key 字符串。

第二十五题,apk 反编译的,看到 java 代码,

int[] var3 = new int[]{75, 69, 89, 123, 97, 119, 52, 110, 110, 52, 95, 107, 52, 114, 95, 109, 120, 95, 100, 51, 120, 125};
for(int var4 = 0; var4 < 22; ++var4) {
    var2 = var2.concat(String.valueOf((char)var3[var4]));
}

ascii 编码转换为字符然后拼接就好了。

第二十七题,原题,给你三个字符串,看键盘,这三个字符串圈起来了三个字母,提交就好。

第二十八题,一个缩进有问题的 py,自己调整下就好。

第三十题,pyc 反编译,idf 原题,http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=45,网上也有别人的 write up,找到改一下变量的值就出来了。

忘了题号的,有一个是 html 的16进制编码,使用 burpsuite 自带的解码工具接一下就好了。还有一个是 idf 原题,邮件 uuencode 的。有一个找漏洞的,关键词KRB5 TGS-REQ,idf 原题,参考 http://www.freebuf.com/vuls/56081.html

渗透题目就做了一个,用了acunetix扫了一下,有 shellshock 漏洞,远程代码执行,先 ls 下,看到一个 KEY 开头的很长的文件,然后 cat 就行。Metasploit也行,有利用脚本。http://drops.wooyun.org/papers/3268

sql 注入的没来得及做,是在用户登录的 x-fordwarded-for 字段中,应该是一个基于时间的盲注。