From Zero To X

zTrix's Blog

Defcon 20 小记

6 月 2 号到 4 号有幸加入 blue-lotus 参加了 defcon CTF 2012 的比赛,感慨颇深。清华第一次组队参加这个比赛,虽然没进决赛,但第一次参赛能进前 20,也算不错的成绩了。

第一次参加 CTF,对于题目最大的感觉就是没有头绪。其实题目涉及面太广,许多题目了解背景知识很快即可破题,不知道的人,想破脑袋也解不出。比如 Forensics 100 的题目,给了个文件系统,大家全在文件系统里面翻,看到一堆又一堆的头文件,但是就是没有结果。等到赛后看了 writeup,发现使用 STK 用一行命令就能得到 key:

blkls -s f100_xxx

大家大呼坑爹,这谁知道啊!!为什么这样得到的是 key 啊!!有没有什么解释啊!!

但是事实是无情的,虽然是 100 分的题目,只要一个命令,但是我们就是解不出来,而各国牛队则瞬秒。这也许就是经验的差距吧。

Grab Bag

Grab Bag 的题目普遍简单,5 道题目我们解出来 4 题,最后的 500 分题到现在 writeup 都没出来,估计也没几个队做出来了。

grab bag 100

gb100 的题目就一句话: hack the planet_。我就一直在思考为啥 planet 后面是个下划线。结果没过几分钟,我们组就有人做出来了,key 就是一个 !,当时也没多想,现在才发现,下划线的意思是在最后填一个 charhack the planet! 可能是一句 hack 文化里面的 slang 吧。所以没有点背景知识就来打酱油真不行。

grab bag 200

gb200 的题目是给一个图片和一个 mac double format 文件,mac double format 里面藏了一个链接链到图片的原文件,对比一下发现给的图片后面附加了一个 DNS PTR 查询包。于是大家都想到了构造这个包再发一遍,但是,结果别人得到了结果,我没得到。悲剧!等到赛后看 writeup,发现原来我没有把 source port 指定相同。唉!就差了一步呀。

grab bag 300

gb300 是个破解 ATM 取款机的题目,组里有人一眼就看出了规律,太强了!但是人眼看速度不够,只好写程序,好吧,我写得没别人快,就没继续做了。

grab bag 400

gb400 是个 SQL 注入,组里有强人立刻就发现了漏洞入口了,好强。没有注入经验,果断不会,好在有强人在,很快解决了。

Random

random 100

random100 也是让人摸不着头脑的题目,题目是一句话:

How many developers;) did it take to secure Windows 8?

key 是 152,看了 writeup 也不知道为啥,甚至当时大家做出来的时候,都不知道谁做出来了。我当时写了个脚本把 1 到 1000 都遍历提交了一遍,莫非是我解决的?好开心!

random 200

random200 果断不会,今天看 writeup,发现前面都正常,到了最后,作者发现了这个的时候:

fr an
it ha
hi ez
jp er
en-us !!

他居然直接就猜出了 key 是 icanhazcheezburger!! 。这也太假了吧!!莫非是有我们不知道的 hacker 典故?还是这个人是脑力王??

random 300

random 300 是最 straight forward 的一到题目了,要求用足够少的交换次数把 100000 个 uint16 排序。我开始怕超时写了个 qsort,结果发现交换次数太多。然后准备写 O(n2) 的 selection sort,达到最多交换次数 N-1。结果写到一半又被别人抢先了。悲剧!

Forensics

binary 和 pwnable 的题都要求 binary 调试,还是各种 MIPS Binary,FreeBSD,我果断看都没看。不过取证这块还是可以看看的。

Forensics 200

大家都盯着那几个图片看了。结果又是一道工具题,不知道的人果断是解不出来的,结果也就几行命令:

stegdetect -s 2 2467trash.jpg
outguess -r -e -k “ddtek” 2467trash.jpg key

原来是道 Steganography 的题目。好吧,现在懂了,不过这个 outguess 里面用到的 ddtek 是怎么来的,writeup 作者说是用了一个字典搜的,换作我们,即使知道用 outguess 也猜不出 key 吧,谁的字典里会有 ddtek ?

Forensics 300

Hooray! 这是我唯一解出来并提交的题目!大概就是给了个 OpenWRT 的 firmware 镜像,用 firmware-mod-kit 解一下,就能得到答案了。太开心了!

Binary

突然想起来,其实还是看了一道 binary 题目的,就是 bin 100 的题目。这也是一道好可惜的题目。题目给了一个用 skynet 漏洞的 ssh 和它的输出文件 mac.h,我们也发现了 mac.h 是用直接去反编码的 ASCII。但是谁知道 key 就在里面!!我们都跑去分析给的另外两个 ssh 和 sshd 了。好在最后还是做出来了。不知道是谁试的。其实我印象中记得我把 mac.h 里面的字符串都试了一遍,为啥我们试出来?RPWT?

总结

Anyway,比赛已经过去。很高兴能认识很多安全领域的牛人,也很开心打酱油也能做出题来。发个结果图和名字纪念一下吧!期待明年再战!

最终排名 和最终解题结果:

其中绿色是我们解出来的题目,蓝色是我们没解出来,但是有队伍解出来的题目,灰色是还没开放的题目。紫色是当前在做的题目。再发个链接:writeup collection

Comments