2018″骇极杯”全国大学生网络安全邀请赛线下AWD

IMG_3102.JPG
这次比赛在我429爷爷的带领下获得了第一名,很开心,对得起我们去的时候17个小时火车和回来的时候22小时的火车。(以后打死也不坐这么久,难受的一匹)。还有就是中午的披萨挺好吃的~。
刚进会场的时候,位置上有一个小手册,上面写着服务器的信息和比赛规则,我们配了10几分钟后又给了我们一张纸,发现那个小手册上写的好像是去年的,23333。这次比赛给了两个web和一个pwn。一个是witycms,一个是metinfocms。刚开始就是上去备份源码,但是我用tar -zcvf web.tar.gz /var/www/html命令没有成功,我只好手动拖下来了。然后就是上流量记录waf和文件监控,但是发现批量include文件网站会报错,最好是include到一个网站大部分文件经过的文件里,之前没有想到这个点。文件监控也出了问题,当时很急,就没仔细管,之后也忘了看怎么回事了2333。
刚开始Geekpie直接拿了一血,应该是发现了/web2/hits/index.php里面的一个命令执行,用a[0]=md5&a[1]=/flag;即可,而且这里可以直接getshell。
图片.png
我刚开始拿D盾扫了,没有发现这个点。我429爷爷去审另一个洞了,也没看这里,下午我抓流量的时候才发现。这波很亏。
我刚开始打包网站的时候一眼就看见了web1的phpmyadmin,我很快就在配置文件里找到了数据库密码,并登陆了进去。
图片.png
看到密码这么复杂我还以为每个人的密码不一样,结果我随便找了个ip试了一下竟然登陆进去了。然后我赶紧把我们的密码改了改,并且尝试getshell。SHOW VARIABLES LIKE "secure_file_priv";了一下发现可写目录不在www下,用general_log发现报错,估计是权限不够。然后只能放弃,本来还想着试一下最新爆出来的RCE,但是没网也没有payload。赛后发现phpmyadmin是4.8.1的,已经修复了。
这时候我想了一个坏主意,在phpmyadmin里执行set password for witycms@localhost = password('xxx'),更改他们的密码让他们down掉,我们就可以拿分了。试了几个发现他们的密码都没有改,不到10分钟我手动就把基本上全场的密码都改了,只有两三个改不了。但是最后我们并没有加分,并且web2一直被打。我觉得根本没有check,我就直接把静态页面放web2下了。并且没有被打,也没有check。过了几轮我发现我们web2被check了,但是名次增加了,直接加了280分,没几轮我们就从10几名变到第四,好像11点多的时候就直接变成第一了。
接着我429爷爷就审出来了一个任意文件读取,在web2/app/system/include/module/old_thumb.class.php
图片.png
会把$dir中的.././替换为空,并且会判断字符串的第4到7个字符串是否为http,以及传入的$_GET['dir']不能有http。满足的话会加载图片并显示,这里有一篇类似的https://www.freebuf.com/column/183986.html但是题目的源码稍微改了改。
429爷爷的payload:htthtt./p...././/...././/...././/...././/...././/...././/...././/...././/flag然后我们就拿着这两个洞开启打全场模式了。
过了会我想到他们可能会重置web1,就又手动改了一轮密码发现还有好多人密码没有改,显然他们没有意识到网站为什么会崩。在准备写批量改密码脚本时,裁判过来找我了,告诉我不要再改别人的密码了。我以为我犯规了,赛后裁判讲话的时候才知道裁判怕其他的队伍没法玩。。。之后依然有其他的队伍去改别人的密码,而我们就躺着拿分。
TIM图片20181124114353.png
可以看一下比赛还有快4个小时的时候我们web1只有3200多分,而最后我们的web1竟然拿了5500多分23333。只能说运气比较好吧。
还是tcl,要学的东西还有很多。伟爷爷牛逼。

2 thoughts on “2018″骇极杯”全国大学生网络安全邀请赛线下AWD”

发表评论

电子邮件地址不会被公开。 必填项已用*标注