记录一下学习和打XSS靶场的一些思路和经验
当前靶场来源于GithubXSS-labs
0x01
-c25941af8a214118a4cf2ba890c2baf8.jpg)
看到url有参数可以尝试利用,修改参数,直接插入XSS语句-8a445f1760c34f08b06898a675693ec6.png)
0x02
-a6e169fb9b89447aba05348fc146055b.jpg)
-8ecaace20462494ab678cadd934759b0.jpg)
尝试将XSS语句插入输入框,发现没有效果,原因是这关插入的是在标签里,而第一关是在标签外。标签中的内容会直接输出不会被解析,需要加入”>完成闭合后再执行XSS语句。
1  | ><script>alert(1)</script>#  | 

后面的#是为了注释掉>
0x03
-e1f47de4debb4ca4b6ba6105cfc0de47.jpg)
使用上一关的payload,发现不行,打开F12查看。-38091e69bcd34b3291cd04b65cb352b6.jpg)
发现是过滤了双引号,可以使用单引号闭合,发现html对value的内容进行了实体化编码-859c424104d04d52a5229d99a84f6707.jpg)
可以使用点击事件,构造payload
‘onclick=’alert(1)’-af09d734128c42c49f77e774ddb8495e.jpg)
0x04
-9395c2a7ccaf495dad278b72ec9d4494.png)
使用第三关的payload发现不行,查看源码-6f3985ba9a5f49f3a48895291ef87e37.png)
不仅对<>括号进行了过滤,而且还进行了htmlspecialchars()函数过滤。尝试不添加<>并根据input标签构造payload。
-b1b6619c8c794487aefe1d589348bdc4.png)
0x05
-cd4afb3c1fc5462881f30724464fd228.png)
尝试上一关的payload,F12查看,发现这关对on进行了过滤,尝试大小写,仍然不行。-a08d01d3f477414594ce231d8f58a5d4.png)
试试最原始的方法插入>查看结果-be3105d7d8ff4b7fac5e46990bac6157.png)
发现没有屏蔽掉>闭合,尝试构造payload
1  | "/><a href="javascript:alert(1)"/>  | 
-88a91782c15e444ea2a87b5aa888bd3d.png)
发现有个类似超链接的>,尝试点击。-f179bd6a02b8410d9bf37afeb047f43d.png)
0x06
-8d45acc4d8d84e2db77cc2bb0d9f156c.png)
尝试使用上一关的payload,结果当然是失败的,看看失败原因-f5fd14c5bed64433bd73fea681b92b0f.png)
发现对href进行了过滤,使用大小写混合,尝试一下结果。
1  | /><a hREf='javascript:alert(1)'>  | 
-f37219437969491884de54bb59e351b0.png)
-2df7ee6e70c149558d6d885134dcfa9f.png)
0x07
-0579da56f7134679824685f7640ebd55.png)
使用第六关的payload发现没有效果,F12查看内容-889dac8638904cadabc6d8a00ee4ef31.png)
发现是过滤了href、script字符-4a63a9ee9d564c739223f5b535c20111.png)
在偶然的尝试中发现通过复写html事件的敏感字符可以绕过,尝试插入复写的XSS的payload
1  | "/><scrSCRIPTipt>alert(1)</scrSCRIPTipt>  | 
onclick等html事件也可以绕过
0x08
-f8515163ef474e1cbcd82fb7b6a0cd63.png)
输入123,点击按钮,发现跳转到名为123的页面,实际上就是url的跳转。
试试使用
1  | javascript:alert(1)  | 
发现系统过滤了script字符,使用复写,发现也被过滤了-2e014a8a67c34f2cb3ab23917a51bed0.png)
试试将payload编码-9e6efda1288443e4890a228d058b9b48.jpg)
成功弹窗-a20a898eae0340979afb298e8ef8d938.png)
0x09
-a9428e6849104cf780725bdc20ac7e60.png)
继续使用上一关的百度链接,发现返回错误提示-cdf2c9349fa7462ba329e9f9cb1be76e.png)
尝试随便输入字符123
仍然不行,尝试加入http或者https,发现http可以生成链接https不行-ecf049ce8e1e47cea05f48ea244bc499.png)
查看源码发现加入了php的strpos函数,该函数的作用是对该字符串进行目的字符的搜索,若搜索不到则出现错误页面。
payload仍然使用上一关进行unicode编码,-ce6567738a6640df8b7557f5ae9c8227.jpg)
尝试在unicode编码后的payload加入http://-2a45240c949c41449ceeb87470a9e180.jpg)
发现可以成功转成我们想要的payload,但是有一个http的阻挡,仍然不成功。只需在http前面加入一个//
1  | javascript:alert(1)//http://www.baidu.com  | 
-bd2e06c1d3a346b2aa9fc7d29db9a8a5.jpg)
0x10
-bee57e8c42a2406dbd5b6349a4d0b262.png)
这关发现好像没有可以注入的点,打开F12,查看有参数keyword,尝试从url注入。同时发现了隐藏的输入框,并附带各自的参数。-9cca4cf94bac4338b1601872980f6814.png)
-71230ccf2d0143ed98d7d615bc8e9439.png)
-2dbafa4ed0fd4efdab0c985056b7023a.png)
尝试输入参数变量,查看页面返回的结果。
1  | http://192.168.1.106/xss-labs/level10.php?keyword=123&t_link=1&t_history=2&t_sort=3  | 
-59667ad76b5345b1a1b15951c1d0ec12.png)
发现sort变量的3被填入页面,猜测可能是sort有注入点,尝试插入XSS语句
1  | http://192.168.1.106/xss-labs/level10.php?t_sort=3"onclick="alert(1)"  | 
但是好像没有变化,可能是隐藏属性影响了语句的执行,因为需要通过点击,但是页面是不显示输入框,所以无法点击,在url后面写入 type=text
点击输入框-09cf2e41aebd44049eb6ef21e21037ea.png)