WCTF2020新锐赛:一个Misc选手的视角

其实馋那只熊猫很久了,看起来毛茸茸的又很有精神。

但毕竟是国内档次较高的CTF赛事,本垃圾Web只学了个皮毛,二进制又是一点不会,报名WCTF的时候良心上还是有点过不去的,就怕摇身一变拖油瓶。不过毕竟可以远程协作,就还是报了上去。

结果上来说,出了五题,拿到了亚军,其中两个非预期,一个Pwn,两个Web,也算是没有白去吧。只能说这次运气很好,打的很快乐。

Day 0

下午三点,从广州白云机场到北京。

此次比赛的机票和酒店是由360那边直接定的,去程不小心选了一个到大兴机场的航班,距离望京凯悦整整一个半小时。五星酒店也就上次XCTF Final的时候住过一次,大气(

酒店签到,这次的伴手礼是木制拼图 —— 可能要拼五六个小时的那种。

晚上找了一家周边的日式自助烤肉,120R/人,吃的蛮爽的;除了各种肉之外,小食和甜点都不错。主食当然是没有点啦。

Day 1

老天,这酒店的早餐是真的顶。

开场的countdown动画还挺好看的。

不知道为什么本地连阿里云ECS的大多数端口都不太好使,可能是被防火墙过滤掉了。最后在80和443开的反代,至于好不好使也不清楚 —— 也没啥题需要代理。

一直过去五个小时都是全场零解。酒店搬了一些甜点水果啥的过来,也布置了咖啡机啥的,好吃。相比之下午饭就比较常规。

到了下午,小喇叭把SSTI的地方整了出来,我就放下玩了一天的扫雷跟他一起改exec。玩了大概一个小时,这道web就解出来了,剩下的时间就全都拿来接着扫雷去了。

这题本身不难,只是试exec的时候没注意到环境是Windows。

晚上六点,正在啃赛百味的时候,有个工作人员走过来:“小伙计,扫了一天的雷,misc好玩吗?挺有毅力的啊,我看你是全场扫雷时间最长的选手”“啊?这是misc?”“啊,我不该说吗… 附件题可以好好看看。”

回酒店,开着IDA戳着扫雷抱着电脑就直接昏睡过去了……

Day 2

美好的一天从早饭开始(睡眼朦胧)。

一到赛场,昨天的工作人员就过来问我“扫雷扫出来了吗?”;我只得苦笑一声“扫得出来吗”。

没多久,扫雷的源码就放了出来,我一眼就喵到一个作弊码,啪的一下敲了出来,很快啊。刚才那个工作人员又来问我,“看到源码了吗?”“看到了看到了”,我三下五除二就在本地DEBUG把雷给扫出来了。

可是远程环境它RUST_LOG=info,没用啊?

那、那我就RDP打它吧。shell设成logoff,看来是只能RemoteApp连了;各种参数一通乱调,也没调出个什么玩意。

可是这是misc啊?这都做不出来我不就失去存在意义了吗(绝望)

继续翻文档,啊,翻文档。

看到一个配置项是“keyboardhook:i:value”:

确定何时将 Windows 键组合(WIN 键、ALT + TAB)应用到桌面连接的远程会话。
https://docs.microsoft.com/zh-cn/windows-server/remote/remote-desktop-services/clients/rdp-files

我一个激灵,能不能按个任务管理器出来啊?一查,Ctrl+Alt+Del调不出来,但是可以用Ctrl+Alt+End!虽然只有Lock和Logout两个选项,但是右下角有个啥啊,有个Windows辅助工具啊!

On-Screen Keyboard,启动!Options!控制面板,出现!

这可真是太草了,最后连扫雷都没扫,双击打开flag.txt结束游戏……

我当场就一蹦一跳的出去拿了一个布丁回来接着吃。好吃。工作人员过来确认了一下,它是个非预期(当然啦)。

事后看题解,正解是时间测信道攻击。虽然肉眼观察不出来,但是写脚本是有办法解的;只可惜……被非预期了。

朋友们好啊我是wctf2020的minesweeper-extreme。 刚才有个朋友问我发生什么事了,我说怎么回事,给我发了几张截图,我一看!嗷!原来是昨天,有几个黑客,带着电脑,一个十多岁,几个个二十多岁,他们说,哎…有一个说是我们战队在快被wctf踢了,minesweeper你能不能给,哎…帮助一下,这个可怜的战队,我说可以。我说你开ida逆向rust不好用,他不服气。我说小朋友:设置rust_log=info给你rdp来登我远程玩扫雷,我还给你源码,他玩不动扫雷。他说你这扫雷没用我说我这个有用,这是只能侧信道,预期思路是讲基于时间的侧信道攻击。再牛逼的黑客,两天都日不动我这个服务器,啊…哈!他非和我试手,我说可以。诶…我一说呢啪就站起来了,很快啊!然后上来就是一个shift*5一个cmd属性一个ctrl+alt+delete,我全部防出去,防出去了啊,防出去以后自然是传统ctf以点到为止只是没给他flag,我笑一下准备关闭粘滞键,由于这时间,按传统ctf的点到为止他已经输了。啊,我关闭粘滞键的时间不打了,他突然袭击ctrl+alt+end来打我,我大意了啊,没有闪,哎…他的操作给我键盘,啊,虚拟键盘,蹭了一下,但没关系啊!他也说,啊他截图也说了,两分多钟以后,当时打开输入法了,又打开了控制面板,我说停停。然后两分多钟以后,两分多钟以后诶就好了,我说小伙子你不讲预期解你不懂,他说minesweeper对不起,对不起,我不懂规矩。啊,我是…他说他是乱打的,他可不是乱打的啊,option,超链接,控制面板,文件系统,训练有素,后来他说他练过两三年misc,啊,看来是有备而来!这几个年轻人不讲预期思路,来骗!来偷袭!我minesweeper remoteapp,这好吗?这不好,我劝这几位年轻人好自为之,好好反思,以后不要再犯这样的聪明,小聪明啊,ctf要以和为贵,要讲预期解 ,不要搞乱七八糟的非预期,谢谢朋友们!

— Q4n @ Qzone

在我们出扫雷之前,Q4n和Msk整出了一道Pwn,现在一下子就蹭到了Rank 2;可还能做些什么呢?有道EOS题,暂且先看看吧。这个EOS链上的producers的私钥公钥都给了,应该稍微玩一玩能玩出来?

于是我把队友们打发上去吃饭(茶歇吃太多了),自己一个人留在下面玩。

等等,为什么请求eosio eosio producers它结果不一样啊?

直接提交请求,failed。嗯……写个脚本试试。

试试就逝世,大概5次里面有1次会fail,然后challenge的checker是连续跑20次的。

那我还不直接打爆?开发者工具打开,一个复制,一个粘贴,一个while true do os.execute就打下去了,三秒出flag。

昨天还不是这样的呢 —— 事后清华爷告诉我们,服务器昨天被打崩了才变成这样的。好家伙。

Ver大哥晚上说这题目EOS版本打五折,以后拿到这种东西还是要先检查一下版本号啊。不过他们也是非预期出的(草)

偷偷交了一个Flag之后,队里充满了快活的空气。工作人员过来确认了它是个非预期(ry

下午剩下最后几个小时,我们决定所有人一起搞一题看起来和HTTP2有关的Pwn。

谁知道curl过去之后发现它其实是个Web,直接搜到Timeless-Timing-Attack,就干了上去。

Github上的脚本有点问题,我改了半个多小时才让他跑起来;发现能够逐字母爆破之后我没有多想,马上连写三个脚本分别处理爆破、取交集和最终的校验。如果再冷静一些的话就能把脚本改成单机30分钟内能跑完的版本,不过剩下2小时的时候非常激动,根本没有多想,马上就五个人多线程跑起来了。

倒数30分钟的时候,我们爆破出了整个flag —— 好在它只包含小写字母,可以说是出题人的善意了。这个攻击非常有趣,很多服务都支持HTTP2(尽管平时看起来比较少用)。利用这个攻击,可以把基于时间的盲注效率提高到一个很高的相当高的水平。

最后30分钟,该扫雷的扫雷,该看番的看番,躺在椅子上假装平静(实际上就怕别人藏了一堆flag慌得不行)。最后冠亚季军好像都有200分左右的分差吧。

剩下的就是拍照、领奖、与周围的大佬们谈笑风生了。事后我才知道现场清华还来了一个“脑王”,好家伙。

这场CTF里面能拿到第二,还是多亏了队友们之间的合作。除了EOS那道题之外,基本上都是2人以上怼出来的。此外,这场运气是真的好。平时哪来那么多非预期啊()

晚上和Ver大哥一起出去吃饭,最后绕到了ココ壱番屋。回酒店后和Q4n去健身中心跑了会步,包场状态。泳池也是免费的样子,不过我没有带泳衣来。

此次一别,不知何时才能再会呢。

Day 3

吃过早饭,回去又睡了个回笼觉。

人生第一次看到雪,是北京2020年的第一场雪。虽然出门的时候好像跟下雨没有什么太大区别。

再吃过午饭,就前往首都机场了;等回到学校,已是晚上八点有余。

论气氛,WCTF是我去过的最好的现场赛了。不管是线上的大师赛还是线下的新锐赛,每一个Flag都能获得大家的掌声。物质上的,包括衣服、航班、酒店、饮食、网络、赛场、转播、摄影等等,也是准备的非常周到。

可惜小米邀请赛没打进去(抱头) 从返图看来,小米那边也做的不错。虽然去了可能是要打铁啦。

这次14道题里面大部分都是Binary,我也稍微试着入门一下吧(小声)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です