作者:__乀余海燕v | 来源:互联网 | 2023-10-11 20:04
目录1.绕过input标签2.input框onclick事件绕过3.白名单绕过4.href属性绕过5.双写法绕过6.html实体编码7.注释符号绕过上一篇通过一个小案
目录
1. 绕过input标签
2. input框onclick事件绕过
3. 白名单绕过
4. href属性绕过
5. 双写法绕过
6. html实体编码
7. 注释符号绕过
上一篇通过一个小案例了解了XSS漏洞的基本原理,危害程度以及漏洞产生的原因,本篇将通过一个示例来了解XSS漏洞的利用思路和绕过方法。
直接在搜索框中插入js代码,后台完全把我们输入的代码用引号括起来当做字符串处理了,在绕过过程中需要把引号闭合掉,插入js代码绕过input框,最终构造的代码如下:
">"
前面的双引号和尖括号是为了把之前的">符号闭合掉,从而使插入的js代码绕过input框。
测试结果:
js代码最终成功绕过input框
后台对输入的
欢迎来到level3 ini_set("display_errors", 0); $str = $_GET["keyword"]; echo "没有找到和".htmlspecialchars($str)."相关的结果. "." str变量存储的就是输入的XSS代码,但tmlspecialchars函数将XSS代码中的特殊符号(<,",>)给过滤了。这里有一个坑要注意:其实input框中的value是单引号进行闭合的。
那么可以利用input框的onclick点击事件来进行绕过,同时对单引号进行闭合,构造XSS代码如下:
&#39; Onclick=alert(123) &#39;
由于后台把
欢迎来到level6 ini_set("display_errors", 0); $str = $_GET["keyword"]; $str2=str_replace("$str3=str_replace("on","o_n",$str2); $str4=str_replace("src","sr_c",$str3); $str5=str_replace("data","da_ta",$str4); $str6=str_replace("href","hr_ef",$str5); echo "没有找到和".htmlspecialchars($str)."相关的结果. ".&#39; 后台源代码中定义了一堆过滤的规则,由于PHP对于大小写不敏感,我们可以把href标签使用大小写的方式进行绕过。
现在改变一下思路,用大小写的方法改写href属性:
a">
5. 双写法绕过 在level7中的地址搜索栏插入JS代码:"> a,后台把代码进行了替换:
a">
分析level7部分关键代码:
欢迎来到level7 ini_set("display_errors", 0); $str =strtolower( $_GET["keyword"]); $str2=str_replace("script","",$str); $str3=str_replace("on","",$str2); $str4=str_replace("src","",$str3); $str5=str_replace("data","",$str4); $str6=str_replace("href","",$str5); echo "没有找到和".htmlspecialchars($str)."相关的结果. ".&#39;
level7中过滤还是用的str_replace函数,在构造payload的时候只需要对script和href标签使用双写法绕过即可。
构造XSS代码如下:
"> a
6. html实体编码
对于之前的绕过方法,在level8中都无法使用成功了:
后台对于之前所有的绕过方法都无法使用了,现在我们需要换一种思路,使用html编码的方式,也就是在JS代码中加入html编码,例如对于Javascript关键字,我们可以把字母c替换成html编码&#67; 最终构造的payload是这样的:
javas&#67;ript:alert()
注意:是把JS代码插入input框中(如果放在URL地址栏中,系统会对html编码做特殊处理,导致插入的JS代码无法执行),但是后台在处理代码实际上是这样的:
友情链接
点击添加友情链接后,然后点击友情链接就会看到alert弹窗:
7. 注释符号绕过
直接插入JS代码Javascript alert();的话,后台页面将会对代码进行过滤:
友情链接 如果我们在JS代码后面跟上url链接的话,后台虽然不会过滤,但是这并不符合JS语法,并且对于Javascript用下划线进行了过滤:
我们可以通过JS语法中的注释符号和html实体编码方式把后面的url链接都给注释掉:
友情链接
后台执行结果:
成功绕过后台的过滤。