XSS 绕过
1.靶场输入xss语句查看
被过滤的只剩下">"了
2.查看该靶场源代码
如果是用docker搭建的话,使用"docker exec -it 容器ID bash" 进入容器,这些靶场文件都在var/www/html/vul底下,xss绕过的文件是var/www/html/vul/xss/xss_01.php
查看上面的文件,发现输入的数据会被preg_replace()函数过滤,可以看看这个文章:https://blog.csdn.net/liujihaozhy/article/details/79937678
3.绕过方法
1.大小写绕过
根据上面的过滤方法,我们可以试试大写是否可以:
<ScRiPt>alert("思念变成海")</ScRiPt>
2.JS事件
<img src=# onerror=alert("思念变成海") /> #onerror=alert(1) 在加载文档或图像时发生错误,多去了解各种绕过姿势
其实绕过方法有很多,比如编码,换标签等等。有兴趣可以去总结XSS的各种姿势,当然,实战情况下是不可能知道过滤规则的,只能自己慢慢去尝试。本人曾经实际情况遇到过一个无论输入任何标签,例如<…>…<…>,或者是<…>,他都会把刚开始的"<"给过滤掉,后面偶尔看到一个姿势,使用双标签成功绕过了,多去尝试总是好的.
<title><img src=</title>><img src=x onerror="alert(`xss`);"> //因为title标签的优先级比img的高,所以会先闭合title,从而导致前面的img标签无效