XSS-labs
level 1
先查看一下源代码
由此可见并没有任何的过滤措施,直接输入关于name的参数作为payload即可
弹窗成功
level 2
再去看源代码
由此可见在获取keyword的值之后有两次输出,一次被.htmlspecialchars()所过滤,但第二次在表单input输出并没有进行过滤操作,由此我们可以通过第二次的输出进行xss注入
有两种方法
1.不逃逸input标签闭合前边的双引号加个事件触发xss即可:
payload: "onmousemove="alert(1)
2.逃逸出input标签执行另外的标签触发xss即可:
用标签payload为:"> 很遗憾用不了
闭合标签 test">
level 3
第三关仍然先看源代码
:这次它将两个输出点都做了htmlspecialchars()转义,那既然做了转义那么双引号和
尖括号就没有效果了,但是单引号在这个函数中如果没做特殊的改动,默认是可以出效果
的,而且源码中的value是用单引号,看来是有意让使用单引号。
payload: ' onm ouseover='alert(1)
level 4
一如既往的先分析源代码
通过代码能看出,本关将<和>都替换成了空格第一个str输出也做了过滤,但是这并不影响和上一题一样进行闭合和在input标签内发出xss
level 5
一如既往查看源代码‘
和前几题大差不差,也是将
payload:"> <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgpPC9zY3JpcHQ+"> <"
额,能弹窗不能过关
level 8
一如既往先看源代码
这次代码先是将字符转换为小写,然后过滤特殊字符和双引号,最后又加了一个转义函数输出,所以按常规方法绕几乎不可能成功,代码处的添加友情链接是
突破点,在input框中输入字符提交之后,在友情链接处会载入一个拼接后的a标签,因为javascript被过滤对其进行编码绕过再点击友情链接即可。
但是我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议
level 9
这次在上一题的基础上加入了strpos()函数,查找如果url中找到'http'那么会返回找到位置的位数,自然不会返回0也就不会等于false,那么就可以绕过限制了,但是为什么会这么做呢?回想了下,应该是让输入框必须要输入合法的URL即带有http的字符串,那么可以向输入框加进去就可以绕过了
payload为:javascript:alert()//http://
直接输入javascript:alert(/xss/)//http://会和第八题一样被过滤
level 10
从前端源代码发现有隐藏表单,这道题有俩个输出的地方,第一个被实体化过滤,第二个是隐藏表单的"t_sort"参数即'$str33',过滤了尖括号,那么就在input标签中触发xss即可,可以用onmouseover或者是onclick,需要将隐藏表单显示出来触发:
先闭合value值
payload为:url后加 &t_sort=xss" onm ouseover=alert(/xss/) type="text"
payload为:url后加 &t_sort=xss" onclick=alert(/xss/) type="text"
标签:总结,XSS,level,过滤,labs,&#,xss,源代码,payload
From: https://www.cnblogs.com/vaneshadow/p/17428802.html