CISCN2020线下决赛纪行

最近有点忙,好几篇文章写了一半都出不来。不过正好去了一趟武汉,就来写一篇流水账记录记录这次魔幻的CISCN线下决赛吧。啥也不说,YLBNB!

DAY0

签到日没什么好说的,下飞机大概一点多,基本只是签了个到然后参观了下华科。但是不得不说,华科网安学院还是真的下了很大投入的,从各方面配置上来看都堪称豪华。尤其是他们的靶场,说不酸是不可能的(

相比之下,我们学校的只能叫机房

然后看了看场地,就回去准备第二天AWD的策略了。由于主办方前一天才通知改赛制,所以我们很多东西都没准备。晚上临时准备了一个抓流量的板子,下了几个docker环境简单配置了下,之后讨论讨论策略就睡觉了。

暴风雨来临前

DAY1

DAY1就是正常的AWD,但是其中发生了很多事情让它变得很不正常。一开始我们队倒是挺正常,总共8个题,4web+4pwn,唯一的问题就是pwn的题号是跳着的(1、3、4,后来才知道是ylb在创新)。15分钟的修补时间都忙着上抓流量了,所以基本没什么空余时间修补,就有一个非常明显的shell。之后由于我们没有pwn手,我随机patch了一下pwn就专心在web上了。

第一波被打我记得是web3,应该是一个后门(shell.php)。重放一波的时候发现基本只有C段101~190左右有人,并且顺便找到了几个比较稳定的哥们(151~154,谢谢你们)。这样持续了几波,基本上分就正回来了。但是这几波里,ylb的作用慢慢就给到了——平台交flag要验证码,而验证码真的太TM难懂了!且不论随机的背景颜色和字体颜色,它用的验证码字体真的太难看出o0OilLIxXwWcC了,而且它还开了随机字符大小,整个验证码的阅读就是灾难,基本都需要随机个两三回才能找到清楚的。

某队师傅随机出的究极验证码

而且不仅是内容阴间,这个验证码的判断也很阴间。一开始我就好奇,有时候前端反馈正确的验证码为什么提交之后才提示错误。结果赛后师傅们说,原来它前端校验是忽略大小写的,而后端校验则是不忽略大小写的。这样的验证码识别体验真的是差到离谱。而由于我是负责攻击的,好几轮我都抽不出时间来做任何其他操作,而且就这样频繁提交,每轮还是会多出好几个flag。

之后又拿到了个web4的payload,是一个eval。而跑web4的时候,交flag真的演变成了灾难——由于只有我攻击,所以只有我在交flag。web3的flag本来就已经交不及了,现在还多了个web4。后来实在交不动了,于是拉@BadMonkey佬来当外援帮忙交web3。但是坑爹的是ylb发功了,@BadMonkey佬那边根本跑不通脚本,连平台都连接不上,所以只能我一个人苦逼交flag了。最后我一个人交了将近100flag,这哪是什么网安比赛,根本就是打码竞赛。

又过了几轮,各个队伍对web3的第一个漏洞也逐渐修的差不多了,不过又截到一个ThinkPHP的漏洞(CNNVD-201812-489,所以他们到底是怎么知道的?)。差不多一个时间,我们web4也出了一个注入,@BadMonkey佬也恢复正常网络了,所以就变成两个人在交flag了。此时dxk佬发现web1、web2被种了不少不死马,而且都影响到了check,因此开始着手修理。同时,@Yesterday17佬开始做web2,到了中饭前的时候基本已经测试完成了(没错,还是拿151~154),就差个EXP。

中饭后平台已经处于摇摇欲坠的状态。此前开始逐渐出现“Flag已提交”但是不加分的问题,访问也越来越慢,到最后停赛时已经达到了半分钟~1分钟刷新一次。也许是顶不住压力,一点钟的时候ylb终于宣布停赛,暂停40分钟。此时的说辞还是,有队伍恶意攻击平台。

虽然不是我们,但是差不多就是这样

结果,40分钟在茶歇中迅速过去,但是平台却迟迟没有复原。虽然中间突然诈尸了一下,但是到宣布恢复已经是三点左右的事情了。而ylb的处理方法又再次让我们大开眼界:后半段赛重置分数和所有队伍docker。这还没完,之后又发生了一系列灾难。先是15分钟的加固时间内,某些队伍一直可以正常攻击,而ylb的解决方法竟然是一直重置分数。然后就是,pwn的题目竟然变了!早上我们是1、3、4、5,下午变成了1、2、3、4。赛后询问发现,不同队伍的题目甚至是不一样的,真有你的YLB,AWD还能整出题目不同来。此外,自下午以来,我们队伍就再也没能重新链接到别队的服务器了。“虽然你不能防御,但是你可以看着别人打你啊~”

或许是意识到平台重启真的太多了(后面还有两次),于是比赛又一次暂停,而这一次暂停就再也没能恢复。终于我们是看到了世界名画《YLB在台上道歉》。六点之后,主办方把所有队的队长聚了一聚,开始了一波“安抚情绪”。我记得当时天枢的师傅直接给YLB问的哑口无言:你知道有多少人受影响了吗?你知道影响了什么吗?你不知道你怎么给出合理的解决方案?

YLB最后还是给了解决方案,晚上十点左右发布了新规则:DAY2采用CTF赛制。DAY1分数加权结合,使用13:04之前的成绩,但是方案待定。

DAY2

DAY2开始的不是赛题,而是一张第一天成绩的处理方案选择。商量下来给出的解决方案是,第一天成绩用13:04之前的,并且出问题的7个队伍平均分,剩下让我们选择第一日的分数权重——20%、30%或40%。因为我们DAY1打的还行(Rank20,对CTF断代重组的我校来说真的不容易了),所以我们选择了40%。

DAY2的比赛也有很大的问题。核心的问题还是各方向难度不均衡导致动态分失衡+没有网络。我们队去了2web+1crypto+1misc,而当时web与crypto的难度偏低,导致最后能获得的分数相当低。我的misc中段卡壳:由于极度缺乏参数,因此不太明白如何解一个openssl的加密文件。赛后我才知道,这是用在线工具直接加密的,如果用openssl则需要用旧版本的参数才能解。而当时我们根本没有外网,谁来给我们提供在线工具呢?我当时尝试了openssl enc -ciphers与秘钥算法的所有组合,结果你告诉我在线工具点一下就行。其他还有re1的risc-v、pwn1的arm这些断网环境下我们没环境的题也不想吐槽了。最终解题部分rank46,我还是认了,毕竟自己的misc没出而且也有队伍试出来了,还是太菜。

Fix环境基本没什么问题,因为问题都出在了分数。拿到成绩条,15分的Fix队均2~3分,我真的很好奇YLB是怎么Check和EXP的?合着大多数队伍就Fix了1题半呗?而且最致命的是,我们的成绩条上根本没有DAY1的成绩。我们这才知道,早上的询问根本没有意义,如果DAY2不出岔子,必然只采用DAY2的成绩。于是也不知道怎么加的,我们最终的rank是54。我们还不是最惨的,更惨的是边上的NEX,他们DAY1是Rank1啊!

总结

YLBNB!能把这种级别的比赛办成这样,公开程度、透明程度还没晚上华为晚宴的抽奖高,我还能说什么呢?到写这篇文章为止,我们都没有收到用比赛分数计算的成绩表,只有一个加权的模棱两可的结果。比赛这几天,华科的老师、志愿者敬职敬责(饭和茶歇真的很好吃),YLB对得起他们的付出吗?

不过,虽然这次比赛YLB出了很多问题,也或许如果算上DAY1我们也能捞上二等。但是一个不争的事实就是,我还是太菜了。如果说DAY1的表现还行,那我DAY2的表现完全就是拉跨——试了那么多种情况,唯独没有尝试-md参数。反过来想,要是我曾经做到过这样的题,我还会漏掉尝试-md参数嘛?平时做题太依赖网络和文档,一断网就不知所措,或许有赛制的问题,但是也肯定有我自己的问题。明年CISCN在哈工,希望能打出让自己满意的成绩。

分享到

KAAAsS

喜欢二次元的程序员,喜欢发发教程,或者偶尔开坑。(←然而并不打算填)

相关日志

  1. 没有图片
  2. 没有图片
  3. 没有图片
  4. 没有图片

评论

  1. 英雄吕 2020.11.02 11:15上午

    无意间翻到你的网站,简直大神,接受我的膝盖。

  2. oriole 2021.04.20 9:26下午

    请问大佬有20总决赛年misc的wp吗 找了一年了没找到呜呜呜

    • KAAAsS 2021.04.20 9:43下午

      没,回来都记不住题了(捂脸)

在此评论中不能使用 HTML 标签。