介绍
今年再次作为 Tea Deliverers 的成员参加 DEF CON CTF 27,这次我们在 DEF CON Quals 以第 8 名的成绩较为惊险地获得了决赛名额。与去年不同的是,今年主办方没有再次提供 25 个决赛名额,而只提供了 16 个参赛名额,入围决赛的有
Team Name | 决赛资格 | Introduction |
---|---|---|
A*0*E | DEF CON Quals | 由腾讯赞助,主要包括浙大的 AAA 战队,复旦大学的 ****** 战队,上海交通大学的 0ops 战队,腾讯的 eee 战队,可谓是超级大联队。 |
CGC | DEF CON Quals | Cykor + GYG + Codered = CGC,韩国组成的一个联队。 |
HITCON⚔BFKinesiS | DEF CON Quals & PlaidCTF | 又是一个超级大联队,由 HITCON和 BFKinesiS 组成,其中 HITCON 是老牌强队,而 BFKinesiS 则是由台大 Balsn、交大 Bamboofox、中央大学DoubleSigma 以及中科院 Kerkeryuan 组成。两者在去年都入围了 DEF CON CTF Final,今年联手,感觉就是为了🏆而去的。 |
hxp | DEF CON Quals | 也是一个比较早期的 CTF 战队了,一直在举办 hxp CTF,今年将从 ESPR 处接手举办 36C3 比赛。 |
KaisHack GoN | DEF CON Quals | 不熟悉。。。 |
mhackeroni | C3CTF | 意大利超级大联队,https://twitter.com/mhackeroni |
Plaid Parliament of Pwning | DEF CON Quals | 来自 CMU 的老牌强队,多次获得 DEF CON CTF 的冠军。 |
r00timentary | DEF CON Quals | 成员主要来自 Georgia Institute of Technology ,听说今年 jinmo、setuid 等人也在这个队伍里。 |
r3kapig | 0CTF | 近两年中国新生的战队,战队成员来自于中国很多高校、同时还有韩国队员。 |
saarsec | RuCTFE | 不熟悉。。 |
Samurai | DEF CON Quals | 可谓是史诗级老牌队伍了。。。 |
Sauercloud | DEF CON Quals | 德国超级大联队,https://twitter.com/Sauercl0ud |
seoulplusbadass | DEF CON Quals | 韩国队伍,不熟悉。。由 Seoul Electric Decomposer(SED) 、PLUS、BoB、LeaveCat 战队组成。 |
Shellphish | DEF CON Quals | 老牌强队,团队产出了 Angr 这样的利器。 |
Tea Deliverers | DEF CON Quals | 我们战队啦~ |
TokyoWesterns | DEF CON China | 有来自于东京的一群人构成~ |
今年有一些比较有意思的是
- DEFKOR00T,去年在 DEF CON CTF 中获取了今年的决赛资格,但是他们好像没有继续组联队。其中 DEFKOR 几乎完全不参加了,听说好像是 lokihardt 不打了,不太清楚具体的原因。
- Dragon Sector 虽然在 HITCON CTF 获得了决赛资格,但是他们最终并没有参加决赛。今年 7 月份在 WCTF 上交流时,他们说其他队伍人都太多了,而他们队伍人非常少,所以不打算参加。但他们可能会去现场。比赛结束后,我好像在 PPP 组织的 party 上看到了 Dragon Sector 的成员。
赛前准备
由于 kelwin 比较忙,所以今年就让我带队过去了。由于是第一次带队过去,没什么经验,所以提前向 kelwin 和 BrielflyX 咨询了相关的建议,做了一些准备。
在去比赛前,我们简单聚了一把,有人提出了一个有意思的问题:”这次比赛是想要打前一半,还是后一半呢?”,我们都没啥答案,所以大家也都比较佛系了。不过虽然是这样,该准备的还是要准备的。主要分配了以下任务
- 我在比赛前充分调研了已有的搭建内网的方法,尽可能确保国内和现场之间的连接不丢包、延迟较低,最后延迟稳定在 160ms 左右,基本不丢包。
- 我让 kericwy 以及 wdeil 尝试搭建了 Flag System。
- 我们还在比赛前仔细测试了 IDArling,确保大家能够进行逆向合作,但在比赛过程中,还是出现了一些问题,所以还是需要改进呀。与此同时,似乎大佬们都不太喜欢这样的工具。。感觉任重道远。。
- 今年由于各种原因,能够去现场参加比赛的人相对较少,所以最后就让 kericwy 负责后勤了。
各种原因主要有
- 有的人工作了。。
- 由于特殊原因,今年战队很多人的签证都跪了,要么是被拒签,要么是签证时间很长。。
- 同时又有一些人要准备出国,所以在申请一些交流、留学签,导致了护照没法取回来,所以即使之前 10 年签仍然有效,也无法参加。
由于国内有一部分人没法去,所以我们在国内也组了一个场。
在准备买酒店房间的时候,就比较尴尬
1 | Time/place. DEF CON will be held August 8-11, 2018 in Las Vegas, Nevada, USA. |
主办方说由于某些原因,他们也不知道场地在哪里。。可那时候离比赛开始没多久了。。后来去了现场才知道好像是 DEF CON 忘了给 DEF CON CTF 划分场地了,这就有些尴尬了。
8 月 2 号的时候主办方,突然通知说要我们准备材料
1 | Hello teams! |
其中,似乎第四条他们去年也说了。。然而不知道他们会咋搞。
还有很奇怪的是让我们准备一个显示器,然后本来我们就有打算要给 NUC 配个显示器,所以趁机也就买了。当时猜测是要联机打游戏,当然是瞎猜的。最后比赛的时候主办方竟然真的准备了 20 台老旧的 x box 游戏机,还有手柄,让大家联机打古老的游戏。
晚上的时候,我闲着无聊又刷了刷机票,结果发现,机票钱竟然比我当时买的还便宜!!!
8 月 7 日
最后去现场的人只有 8 个人,其中
- 国内 6 人:iromise、zzh、M4x、Riatre、kericwy、equation314。
- 国际 2 人:没有 Nickname 的 sdzhq、ProfFan。
其中只有我、kericwy、Riatre 之前去过 DEFCON CTF,其他人都是第一次去,所以我们这次可谓是有点惨淡了。不知道下一年会怎么样,希望下一年有所改善吧。
国内的人几乎都乘坐达美航班去的,相对来说比较顺利。
中间发生了有意思的事情是 cxm 突然收到了邮件说签证 issue 了,但是时间不太来得及,所以就没来了。
本来以为在西雅图转机的时间只有 1 小时多一点,需要进行百米冲刺,最后发现其实不需要进行冲刺。但整个过程还是比较惊心动魄的,刚下飞机的时候发现排队过海关的队伍非常长,想着这怕是凉凉了。之后工作人员引导我们去自助,速度极快,可是我和 equation314 拿到的票据竟然被打了×,心里有点虚,感觉要被海关问很久了,结果最后海关问了一些比较平常的问题就让我过去了(还让我解释 DEFCON 是啥玩意)。
而 kericwy 则由于一些特殊原因,自己单独选了航班,最后在美国的时候,到拉斯维加斯的航班取消了,错过了百度组织的晚宴,但同时开到了更好的车。
没有 Nickname 的 sdzhq 和 ProfFan 则是乘坐各自的航班来到了拉斯维加斯,相对来说本次比较顺利。
ProfFan 是 TUNA 的成员,然后还有一个国外的 TUNA 成员听说 ProfFan 来了,所以就坐飞机来面基了。我们大概在下午 2 点左右的时候差不多就集合了,然后大家一起出去吃了顿饭,就回去休息了。
然而本来我打算休息,结果回去后就开始和 TUNA 的两位成员开始倒腾一些奇奇怪怪的东西了。。
今天主办方还发了邮件通知大家要准备各种各样的系统
1 | Attention, Hackers! |
看到的时候有些惊讶,因为似乎这是第一年这么整,但是由于需要准备的东西太多了,所以大家都普遍以为大多数是幌子,但即使是这样,我们还是分别准备了这些系统。
晚上是百度的晚宴时间,我们就高高兴兴地去晚宴了,百度送了参会者一个小礼品。然后大家就坐下来准备吃了,当然也遇到了各位大佬,吃的差不多的时候,大家就开始随便交流了。最后,我们问了 slipper 关于比赛的事情,很奇怪,slipper 听问题的时候竟然捂着脸。当然,他并没有回答我们。。。
晚宴后,我们一起合了个照
(今天一整天,没有 Nickname 的 sdzhq 几乎一直在惦记着早茶。
晚宴回来后,简单安排了下明天的事情,然后就睡大觉去了。
8 月 8 日
早上起来和老司机一起去吃了 Subway 的早餐,感觉还可以,然后回去收拾收拾,去找主办方领 badge 了,今年的 badge 相比于往年的 badge 小一些,是圆形的。然后回来后大家就开始捣鼓 badge 了。下午的时候,就有人在 github 上公布了 badge 的固件。。
领完 badge 后,我们就准备去采购物资了。由于让 kericwy 租了车,所以他就开着车带着我们去了比较远的 China Town 买东西,毕竟那里的东西更加适合吃一些。。最后我们采购了一大堆东西,结果才需要 200 刀,所以非常推荐了!由于 99 超市(好像主要称呼为大华超市,不过我觉得 99 也可以)。之后我们还去了比较远的 128 超市买了热水壶。买完东西的时候差不多已经到了中午了,所以我们就顺便再旁边找了家日本拉面,感觉那是真的好吃。
买完物资回来后,没有 Nickname 的 sdzhq 总是在说我买了三大盒草莓,说这个极其难吃。他问怎么没有买可乐,但可乐只有玻璃瓶装的,所以我说我们没有买。然后没有 Nickname 的 sdzhq 一直在强调玻璃瓶的墨西哥进口可乐才好喝。这我怎么知道,下一次一定要让口味挑剔的选手自己去超市买吃的。
下午回来后,由于某些原因,套房马上不能 check in,所以我们就把吃的先搬回我的屋子里了。之后大家就各自随便去玩了。后来我和 M4x 去找 shellfish 的维护 CTF Wiki 的 mahaloz 简单交流了之后该如何把 Wiki 建设的更好。进入他们屋子后,我比较震惊,因为发现他们一堆队员都拿着电脑在搞东西,而我们战队的则不知道跑到哪里去了 0.0 。和 mahaloz 交流完后,我和 fish 又简单交流了一下,他说明天只有 Linux 服务,然后说 Monitor 是没有用的,当时我信了。后来真正开始比赛的时候,才发现自己被骗了。。
晚上到了套房后,一会老司机来了,老司机都惊了,连感冒都不顾了,马上开启了抖音开始拍小视频了。不过一会他又走了。之后我们凑在了一起简单讨论了下比赛的事情,这时候由于国内的人的时间都还合适,所以大家就一起凑在一起讨论了一下。结果发现还是有一些东西需要准备,所以又熬夜准备了准备。
8 月 9 日
到了比赛现场后,发现我们被 ppp,HITCON⚔BFKinesiS 和 r00timentary 包围。这就非常刺激了。
今年的比赛规则与去年几乎保持一致同时有 Attack & Defense 题目和 King of The Hill 题目。和去年不一样的是,今年并没有出现去年题目泄漏的情况(也可能是我们没有发现)。
我把网络搭建起来后,确保远程可以访问后,就开始做题了。国内的选手有的选择同步到拉斯维加斯时间(所以是真正的电竞选手),所以也开始做题了。
开场的时候,放了两道题
- telooogram
- ropship
其中 telooogram 是个 IOS 题目,表示自己并不会,所以就不看了。
1 | each team is provided with an image running telooogram. |
一会 f1yyy 就看到了栈溢出什么的,然后就果断 patch 了。但是我们坑在了主办方其实昨天给我们发邮件说了该题目的账号信息,但是并有找到。所以现场还专门问主办方要了题目信息。。
1 | Test team accounts for telooogram |
下面基本就是 riatre、f1yyy、CC 、marche147 等人在搞了。到了下午的时候 HITCON⚔BFKinesiS 就拿到了该题目的一血。然后没多久,我们也可以打了。似乎 A*0*E 在刚写好一份 exp 的时候, telooogram 就下线了。。
但是比较坑的是,我们很早就 patch 好了这个题目,但是由于主办方 patch 出现了问题,导致一直没有部署成功。
我就加入到了搞 ropship 的队伍里,这个题目是一个比较古老的游戏,是让我们在一个随机的 binary 里构造一系列的 ROP 来攻击对手,从而得分。还没有搞一会,就出了新题 aoool。因为 ropship 已经有足够的人再搞了,所以我就跳到 aoool 了。。ropship 这题我们没有很好的思路,最后就选择了打表做了,但真正开始打的时候已经比较晚了,所以并没有得什么分。。到了比赛结束之前,ropship 也关了。
而 aoool 这题目就比较蛋疼了,c++逆向,还有语法解析,状态机等一堆东西。。
不过有意思的是,与去年不同的是,今年主办方搞了一个类似于 AFL 的炫酷界面来展示攻击的情况。我就一直在逆这道题了。
到了下午 5 点左右的时候,主办方又放了一道题目 ai-han-solo,与图像识别有关,我没有做这道题,所以不太清楚具体的情况。
晚上开会的时候,和往年一样,主办方的分数榜有问题,所以主办方晚上又继续修了。。
也就是今晚比赛结束的时候,主办方就留了两道题 aoool 和 ai-han-solo 。由于只有这两道题目,所以 kericwy 载着一部分人去了滋味成都吃饭。到的时候只剩下 4min 钟点餐时间了,所以我们迅速点了一波。🍚是真的好吃啊。
晚上的话,一部分人在搞 ai-han-solo,一部分人在搞 aoool。ai-han-solo 情况不清楚,aoool 大家逆的都挺头大的,marche147 和 brieflyx 搞出了所有 token,猜出了 server 配置文件的格式,explorer 搞出了 mode osl,wupco 搞出了正确的脚本语句,kelwin 搞出了 type confusion,f1yyyyyyy 一锤定音搞出了exp。所以最后还好,还是有 exp 了。
8 月 10 日
几天开场前,主办方叫 captain 开会,然后主办方说了分数榜的问题,不过对我们队伍没有什么影响。但是有意思的是,主办方给了我们一个 xbox!!!当时都惊了。说上面运行着一个服务,我们需要做一些操作来得分。其实这个服务就是主办方魔改后的游戏:dooom。
比赛开始的时候,很多队伍都可以打 aoool 了,然后我们发现我们的 aoool 的 exp 总是被抄作业,,所以就想了想办法来避免这种情况。后来我们还抄了一些其他人的作业。
我继续加入了 dooom 这个游戏中,由于每轮主办方都会推送固件,所以就考虑抓流量 dump 题目的 binary。
下午 1 点左右的时候 saarsec 就搞定了 dooom,可其他队伍都还在摸索过程中。我继续搞这道题,后来 Riatre dump 出了 binary,然后大家都开始分析。然而 riatre 分析地太快了,所以我就开始准备玩游戏了,手动玩了好几把,感觉非常有意思,之前还非常困,玩了一会就不困。我还手动玩到了第二名,拿到了一些分数。不过过了一会就下线了。
(抄来一张图
之后又放了新题 babi,rust 逆向; mirror-universe,与 LISP 相关。
mirror-universe 放出来没多久,PPP 就 FB 了,然后接下来就是疯狂打全场,,,一直打到比赛结束。。似乎都没有其他队伍搞出来,这也奠定了他们冠军的位置。
然后主办方又放了一个新题 bitflip-conjecture,描述如下
1 | =============================================================================== |
这个题目是让我们输出一个字符串,同时我们应该尽可能确保程序在随机 flip 一个比特后,仍然能够正常工作,得分为 1000-x,x 为 flip 后,程序不能正常工作的情况数。
然后我们现场的几个人就开始搞这个题目了,不过由于手速问题,我们比赛快结束时,才刚刚排名稍微靠前,拿到了一些分数。比赛结束时,我们搞到了 992。
比赛快结束的时候,主办方公布了一道 wasm 的题目:super smash ooos,不过是 preview 的题目。
比赛结束时,又去开了会,和惯例一样,主办方的积分榜仍然出现了问题。
晚上回去的时候简单讨论了一下,然后讨论着时间就过去了很长时间,所以晚上就随便吃了点。。
晚上的话,我和 zzh、equation314 等人一直在搞 bitflip-conjecture,我们从 992 一直升到了 998,在 Riatre 的帮助下,在 3 点左右的时候升到了 999 ,然后就一直卡着,直到早上也没有搞出来。。我们以为这个 999 肯定是不行的。。
现场以及国内其他人的话在搞 mirror-universe 和 babi、super smash ooos 题目,不过直到早上也没有什么很好的进展。心情有点低落。
8 月 11 日
今天到了现场后,主办方通知说和往常一样,今天也会封榜,不会有任何的信息。封榜前的分数榜如下,我们当时排在第三名。
不过开场没多久,主办方就放了一个 web 题目:jtaste。web 大佬们开始干活了。
主办方还宣布,bitflip-conjecture 这个题目需要至少 999 分才能拿到分数,我们觉得心态有点炸,因为感觉有队伍已经 1000 分了。
同时,开场没多久,意大利队就把 wasm 搞定了,拿到了一血,一直打到了比赛结束。我们感觉有点凉,估计肯定要被他们超了。。
但是到了 11 点多的时候,我们通过暴力把 bitflip-conjecture 搞到了 1000 分!!!然后主办方宣布我们是第一个搞到 1000 分的,当时我们都异常高兴。
比赛后,我们在现场和其他队伍进行了简单的交流,然后 PPP 说他们组织了晚宴,邀请大家参加,还有 T 恤可以领。
我们进行了合照,然后由于太累了,所以就去酒店睡觉了。。。
后来,他们把我给搞醒了,说我们被邀请去参加闭幕式,然后我就瞬间起来去参加了,因为我们最后似乎真的拿到了第三名。但是没有 Nickname 的 sdzhq 说主办方在发了 twitter 之后立马就删了,不清楚是什么操作。
比赛最后的分数榜如下,HITCON⚔BFKinesiS 全场表现都非常出色,打出了很多一血,但是最后还是被 PPP 搞下去了。
我们获得了第三名。
我们终于站在了台上了。
颁奖结束后,大家一起聚餐去吃饭了。这个过程比较艰辛,我们先去了凯撒宫的自助,然后发现需要排队两个半小时,然后我们就放弃了,之后就又打车去了滋味成都,结果发现滋味成都也需要等一个小时。而这时候老司机通过麦香搞到了一个骚操作,可以直接在凯撒宫的自助地方进行插队,于是我们打车又回去了。之后就开开心心地开始吃自助了。但是自助好贵啊。
有点难受的是,自助还没有吃多久,PPP 的晚会就开始了,我们大概在 9 点半的时候,前往了 PPP 的 party。
在 PPP 的 party 上见到了很多大佬,闲聊了一会后,我去找 mahaloz 交流了交流 CTF Wiki 的事情,尝试拉了拉其他人。此外,Yan 问我有没有时间参加 12 月份左右的 CTF Workshop,我说还不太确定。之后我在闲逛的时候,突然被别人拍了肩膀,然后开始聊了,聊着聊着才知道是 Robert Xiao,有点尴尬。由于英语不够好,聊着聊着就开始用中文开始交流了。但是后来和 没有 Nickname 的 sdzhq 交流后才知道我错过了一些重要信息:比如 Robert Xiao 已经建了一个 CTF Team,以及他也打算做安全。Robert Xiao 说 PPP 都是来自于 CMU 的人员,包括毕业的和没有毕业的。他们每次比赛都会让 5-6 个新的队员上场,尽量让新队员拿到黑 badge。我和 没有 Nickname 的 sdzhq 都感叹他们非常团结,因为他们队伍里很多人都毕业了,要么当老师、要么开公司去了,但是一旦到了打比赛的时候,都会聚到一起,来打比赛。比如今年他们有很多老人都来参加比赛, 再次夺冠。最后在 PPP Party 聊到 1 点左右才回去。
8 月 12 日
大家收拾东西,然后准备回去,我们一起去 North outlets 逛了逛,我什么都没买,其他人有的人买了点东西。不过中间确实被打车坑到了,浪费了很多时间,导致不能好好逛。所以一定要提前安装好 Uber。之后我们到机场的时候时间已经比较紧张了,不过还好,最后还是赶上了飞机。我们也与 没有 Nickname 的 sdzhq 分开了,他去 USENIX Security 开会了。
总结
这次比赛的过程中,主办方比去年改进了不少,不过还是出现了一些问题
- telooogram 的 patch 出现了一些问题。
- 分数榜出现了一些问题(这个去年也出现了)。
- 网络中间出现了一些小问题,不过都快速修复了。
- 。。。
我们这边的话
- 国内人员非常给力,但是还是有人咕咕咕了。。。
- 现场人员真的有点少。
- 虽然提醒大家带了外套,但现场还是很多人感冒了,影响了很大的战斗力,下一年需要改进。
- 一定要让口味比较挑剔的选手去超市买吃的。
- idarling 仍需改进。
- Flag System 仍需完善。