0x01
-7e48b5e648ac48968a9b024012d4ffaf.jpg)
F12发现多了一个参数,也把这个参数加入到url。-e42c4c593ec041c9afb0afd358e513e8.jpg)
发现还是出现在t_sort参数,尝试使用上一关的payload-b53d26db0a5f4ae1851c515fbf200956.jpg)
没有反应,查看源码发现是对”进行了实体化编码,改变思路。因为必须要使用一个”进行闭合,但由于实体化,导致无论如何不能将value的值进行闭合。
多出来的t_ref可能是个切入点,因为平时没有碰到过,经验比较少,查阅资料后
了解到Referer头注入。-784460aaa2c94cdf9c2691a5904381c3.jpg)
图中有HTTP_REFERER
在第十关即将结束的时候点击确定并用bp抓包-10bacc0e56304c3ca24700e84b34879b.jpg)
看到有Referer参数,尝试将上一关的payload写入Referer,-fc6e57c700c34b80abd0e91938d37593.jpg)
-12d82e82216941f7b43eafa79d2e24fe.jpg)
0x02
-28223f28a2b84dae9c0e1dd9e70826d6.jpg)
从11关开始需要进行代码审计,所以可以打开php文件进行代码的审查-f665bdd4328e46439c037f62078ac885.jpg)
可以发现本关加入了User-Agent
User-Agent中文名为用户代理,是HTTP协议中的一部分,属于头域组成,向访问网站提供所使用的的浏览器类型及版本、操作系统及版本、浏览器内核等信息的标识。
尝试抓包-b10a34cfcc26465dacb8ca897b034796.jpg)
找到User-Agent
将里面内容改成payload-ab5c7b460272474da8f880dc950516df.jpg)
点击输入框弹窗-9795d775ec1f4a32a4267a6caf602ff0.jpg)
0x03
-9afb5e78da8f4a479325ec600a3c38f1.jpg)
仍然利用代码审计,查看可利用的位置。-aedc1da3157e46e4a914804081592470.jpg)
由变量名可得本关可能是COOKIE注入-9059df9d7d924e1e9eb4f75838c84bc2.png)
-68fe401026b14a629d85cd9d5f8ffb1d.jpg)
0x04
-3a77052edfeb44d7a242f3cd4310bb1e.jpg)
本关为Exif XSS漏洞。Exif是可交换图像文件格式(英语:Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
意思是可以通过修改图片的属性将XSS的payload写到图片里面,由浏览器负责读取图片属性造成XSS攻击。链接好像失效了,没有进一步操作。
相关Exif链接
0x05
-b396e68a047c4ee3aa4f6be440e45e80.jpg)
F12查看源码,发现有个注释过的ngInclude,百度搜索下,发现是一个AngularJS的扩展-9ceee05b7f284b70bca5305f9faacfec.jpg)
-8b1a2a1686de44408b4ae666d4a63dc8.jpg)
进行代码审计-728b8406aab84577a5f3102a7036983b.png)
参数为src-a9ce55e7a3774d1f93f2baf8a5d29706.jpg)
-51dda5ac7bf84e3d8d46a8adb740cfa9.jpg)
使用ng-include跳转到第一关的html然后触发xss达到目的
构造payload
1  | http://127.0.0.1/xss-labs/level15.php?src="http://127.0.0.1/xss-labs/level1.php?name=test<img src=1 onerror=alert(1)>"  | 
-8d385999d46a4afba629390b19a0f9f6.jpg)
0x06
-72b6557d30b34067aee7b1b226bbf61b.jpg)
F12查看源码,每一关都通过keyword传入下一关,尝试用keyword传入参数1-fcb70bf113834de4b1a9829b1f12d1ff.jpg)
发现还是有keyword的,同时测试是否过滤了某些关键字符
script,on,href,src,alert
最后发现script过滤了,所以不能直接script弹窗。输出是在标签内部,所以可以用,构造payload为
1  | <img src=x onclick=alert(1)>  | 
-52836b69b0c04334ad62b27031484aa5.jpg)
发现空格被实体化了,尝试转换为换行符进行注入。-9090d3eef42b4486b7d70a4e1fac8755.jpg)
-0958b328f73b4b19bfe5a0cee107ea83.jpg)
0x07

按照惯例,F12查看参数和注入点-9f620edd6c9843a6b2eea99811490fdb.png)
发现一个疑似注入点,随机输入参数,没有变化,进行代码审计-fec0c9664ffd460fad56776025632332.jpg)
embed标签是用来嵌入图片的
看到有两个参数,arg01和arg02,重新输入参数。
1  | http://127.0.0.1/xss-labs/level17.php?arg01=a  | 
-7d920fbc138c4161a09bc928b7dc4ce1.jpg)
发现自动对参数的=号移到了后面,且添加arg02参数后,发现其实是将arg01的参数与arg02参数拼接在一起,尝试构造payload
可以尝试用onclick或onmouseover绕过过滤,onmouseover函数是将鼠标移动到对应位置上触发函数
1  | ?arg01=a&arg02=b onmouseover=alert(1)  | 
-cd152304be8541be9830b903716545f4.jpg)
0x08
第十八关和第十七关解题思路一样,主要是图片不一样,其他都相同,直接在后面填入payload就通关。
0x09
-4b1842bea2a8419e906629b76ed6571a.jpg)
本关的思路是flash XSS,一般触发的类型有getURL,externalinterface.call,addcallback与lso结合等。
需要将网站上的swf文件下载下来。再将flash反编译一下,这里用的是jpex
在github上开源。
由于flash已经不支持在浏览器上运行,这里不好复现。
可以看看一篇文章
flash XSS解题
0x10
20关和19关的解题思路一样的,都是关于Flash XSS如何突破,学的少不是很会,可以看看其他相关文章