Xnuca CTF WEB Writeup

全国大学生网安联赛官网:http://xnuca.erangelab.com/
7月份的主题是WEB,自然团队由我来打了。只是这次比赛发生了很奇葩的现象,刚开始的几乎两个小时,赛事平台挂了,拿着flag不能提交……很多对都是这样。不多说,上主题吧!


团队:枫林SEC

0x01 题目:Sign

解题思路:签到题,直接提交就好,然而之前平台好卡,屯了几个flag后面才提交的。Good Luck!flag{X-nuca@GoodLuck!}

0x02 题目: BaseCoding

解题思路:访问直接看到一个字符串,毫无疑问是base64 ,解密得到flag:
ZmxhZ3tFQTV5YzBkMW45fQ==
flag{EA5yc0d1n9}

0x03 题目:BaseInjection

解题思路:其实之前就想到了万能密码,但一阵狂试任然没有结果,后来官方提示了万能密码,之前试过没有成功,但是后来试了一下,php最基本的万能密码就可以进入:user: 'or 1=1 # 密码随意。
得到flag: flag{N1ce1njected}

0x04 题目:Base Reconstruction

解题思路:这道题接着上一道题,几乎完全一样,唯一区别是做了本地客户端 js敏感字符验证。只需随意输个账号面,抓包到Burpsuit ,然后将账号改为万能密码: ‘or 1=1 # 即可得到flag
flag{Cr05sthEjava5cr1pt}

0x05 题目:CountingStar

解题思路:数星星,我数啊数……看到$$$$…$S ,首先想到的就是PHP的可变变量,心想思路来了,然并卵,$S是什么?于是这道题就这么放着了,后面看到官方提示Mac,这心想……各种搜索之后,查到这么个东西:”.DS_Store”,于是乎去试试果然就成了,下载下来后打开看到了找到了个zip文件,去下载下来epLF1rEihQp5AjCUcgGry330jkFSC1C7.zip
找到了index.php的源码:
1.png

一共109个$符,于是乎很快便得到了这个可变变量的值为 d0llars (后来从表哥们那儿得到的思路是直接在本地echo,其实想想我当时按可变变量计算也花不了多长时间~)
输入提交框,提交burp抓包得到flag:
2.png

0x06 题目:AdminLogin

解题思路:进入题目后,看到一个链接,点进去发现这个 第一感觉就是注入,经过手工测试后发现果然就是注入,直接拿到sqlmap去跑,结果不行……纳闷了,在burp上调试了下发现链接需要有Referer 才能正常访问,这个时候来不及解释了,用burp扩展 send to sqlmap 直接测试注入,结果是美好的:
3.png
拿到cmd5去解密,还是个收费的,谁教我有会员呢?解密结果为:administrat0r

这下好了,拿到了管理员账号密码却找不到后台,测试了下robots.txt看到了这个目录:xnucactfwebadmin/ 进去之后却什么也没有,一阵懵逼……
……

就在最后的一小时拿起来无意间试了下svn 竟然有svn……(狂喜)
http://121.195.186.238/xnucactfwebadmin/.svn/entries
看到了久违的后台:/welcometoctfloginxxx.php,登录后发现提示需要IP为8.8.8.8的用户才能登录。继续XXF:
x-forwarded-for:8.8.8.8 伪造IP登录成功!进入后立马被window.location到了index.php了,于是用Burpsuit Reperter 成功获得回包内容:img后面是很长的一串Base64(特意百度了一下这个是data://伪协议)
4.png
这个base64解密结果是一个png图片的内容,经过精心解密任然没有发现flag的踪迹……
无奈之下 百度“data:image/png;base64”,发现了一篇介绍,这个是Data URL scheme,先不去深究,看看处理办法: 直接把这些数据放到chrome里面就可以得到这张图片了
5.png

0x07 题目:OneWayIn

解题思路:看到登录就想注入,然而这道题不是,看源码当中有一段注释的php代码,貌似是要求用户名密码不同,然后crc32值不同,就会到f3()执行 ,这下好像也没有思路……之后想到了前段时间做的一道web题是数组绕过的,于是乎去试了试,果然就成功了:
6.png
数组绕过,用户名密码随意,进入后看看URL:
http://question11.erangelab.com/flag_manager/index.php?file=dGVzdC50eHQ=&num=
file参数显然是个base64加密,解密后为test.txt,得到的是一个无关紧要的Hex字符串,将其替换为index.php的base64加密,可以成功包含到index的内容,这下好了,在里面看到了flag.php字眼,替换base64加密带入file参数,num为行数,经过一番战斗,成功拿到了内容,然而一种没见过的加密方式,搜索后得知貌似需要花钱才能解密,这下10块钱就成功飞走了(需要开会员)。后来得知,这种加密就是utf-7!
flag{LzUVzDOoxyenc8pjT9weoRuNNIOM4bQ2}


PS:技术太菜,就做了这么多了,还有几道没做出来……
补充:合天网安论坛已出解题思路,有兴趣可去看官方版的writeup