Mki's Blog

第一次线下赛AWD总结

流程

​ 在我看来,AWD攻防像是一个立体的解题模式。

​ 最简单的情况,假设有二十支队伍,那么就会有二十台一毛一样的服务器,每个队伍拥有一台服务器的用户权限,同时也可以访问其他用户的服务器。

​ 而这个题很有可能是一个有漏洞的CMS,部署在这些一毛一样的服务器上面。

​ 我们要做的就是找到漏洞,并且利用,读取服务器里的flag文件。同时我们要在保证网站服务正常的情况下修好这些漏洞,防止被其他队伍攻击。

​ 这里的服务正常就涉及到check的环节,可能在任何地方,一般是post来判断返回值是否正常,假如你把站直接删了当然没人能打你但是会被check down。

​ 而攻击一般是几分钟一轮,每次进入新的一轮,gamebox状态都会刷新例如这次鹏城杯就是五分钟一轮。每轮被打的队伍的gamebox失去十分,这些分数平分给攻击成功的队伍;而被check down的队伍也会失去十分,这些分数平分给服务正常没有down的队伍。

​ 当然,也有可能每个队伍有好几台服务器上部署着一样的题目,形式多样,上面讲的是最简单的形式。

我们需要做什么

​ 首先,为了确保被打之后能及时恢复以及寻找漏洞,首先肯定要备份网站的文件,一般是打包/var/www/html目录下的的文件然后scp下载(命令行是真的方便)。

​ 在有了源文件之后,要进行代码审计,找到洞就能打别人了,同时也要想办法修好自己网站上面的洞。

​ 这里还要提一点,这次鹏城杯平台是给出了可攻击IP列表,但是假如没有提供的话,我们需要自己扫描局域网,找到所有服务器。

​ 同样,假如成功读到了flag,就可以直接上交。

一些技巧

​ 首先是关于交flag这个事情,上面讲到每次线下赛的队伍肯定不少,而且五分钟一轮,手动交flag肯定是行不通的,一般在赛前会有一段熟悉环境的时间,要在这个时候找到交flag的接口并且写好自动交flag的脚本。

​ 其次,在防守这方面,流量审计很重要。假如能及时上log文件记录别的队伍打过来的流量,很有可能知道对面的payload是怎么构造的,同时也能利用一波反打别的队伍。其次抓到了流量也能知道对面在打哪里,假如自己没找到洞的话可能会从这里得到启发。

​ 再次,因为每一轮时间都很短,最好找到洞写完exp就能配合全自动交flag的脚本和IP列表直接开打,攻击读取提交全自动,争分夺秒。

​ 关于审计这方面,一般用seay简单审一下,作用不会非常大,当然dalao们都有自己的方法,这里也无法赘述。

最欢乐的地方

​ 事实上,上面写的都是很理想化的,毕竟对面的dalao不会让你这么好过的。很多情况下,你漏洞还没找到,对面不死马已经写到你的服务器里提权了。这次鹏城杯就是这样,刚找到洞发现/tmp里面一堆木马,还没法删......这些人权限跟root差不多,欲哭无泪。更甚的直接丢脚本写满你的磁盘和内存,动弹不得,只能被打然后check down......只能说自己太菜了呜呜呜呜(但是真的好好玩啊看自己被打也超有趣(这是什么鬼畜想法......

需要去做得更好的地方

​ 首先命令行真是到用的时候才知道不会,同时ssh/scp/nmap的用法没外网就忘得一干二净......而且对linux是真的不熟悉,后面的阶段要多去注意下这个方面。

​ 当然代码审计是真的不会,不仅手速慢,脑子也慢,说到底是审计的太少/知识缺乏的缘故,不够这次跟线下解题不太一样,像XSS或者sql这样的洞好像AWD里面用到的不多,很多是很直接的暴力高能文件上传提权绕过传马一步到位。

​ and根本不会写脚本,py菜鸡,活该被打。

​ 看各种大佬秀操作,真的是学到了超级多的东西,果然要学的东西还有很多,菜鸡Mki要多多努力呜呜呜呜。

杂谈

深圳是真的暖和,回到下雪的杭州差点没被冻死。

错过了杭州的初雪,第一天的裁判小姐姐很像你。