目录
三:XSS绕过--关于htmlspecialchars()函数
一:XSS盲打
XSS盲打:攻击者尝试性地注入一段脚本,攻击管理员,如果运气比较好,管理员没有对后端做相关的过滤,那管理员就会被X到。
(1)只有后台会看到前端输入的内容,从前端无法判断是否存在XSS漏洞。
(2)什么都不用管,往里面插入XSS代码,当管理员登录的时候,页面就会自动执行脚本。
接下来,我们模拟管理员登录,打开URL
http://127.0.0.1/pikachu/vul/xss/xssblind/admin_login.php
后,可以看到管理员页面自动弹窗
XSS盲打成功。
二:XSS绕过
在实际测试过程中,很多系统或多或少会做一些安全措施,但是由于……原因,措施只起到了一部分作用。
一般情况下:
对输入进行过滤的两种方式:(1):对输入的内容去进行正则匹配,然后发现有符合正则匹配的内容,会自动清理掉。(2):是对输入的一整串内容,用一些查找函数去查找。
我们应该如何去绕过?
比如
- 安全管理者只对大写或者只对小写做了过滤,那么我们可以选择大小写混合输入的方式来绕过他的措施。
- <scri<script>pt>只会对”<script>”进行一次过滤,剩下的又重新组装成”<script>”
- 用注释对他进行干扰,比如<scri<!--test-->pt>,在前端的时候,注释“<!--test-->”就是一个简单的注释标签,,前端不会执行它,到了后端之后,后端不认识,从而绕过后端。
错误绕过例子:
正确例子:
XSS绕过实际演示
<scrIPT>alert('111')</scRIPt>
Submit之后,有弹窗“111”,说明已经绕过。
或者采用<img src=x οnerrοr="alert(213)">的方法绕过
三:XSS绕过--关于htmlspecialchars()函数
(1)该函数是PHP里面常用的一种方法。
(2)XSS测试里面一个比较关键的防范措施,就是当我们的数据在输出的时候,要去做前端的实体转义。
(3)htmlspecialchars()函数是PHP里面提供的对特殊字符进行转义的一个函数
安全管理者一般用默认值(不对单引号进行编码),所以我们可以把恶意代码放到单引号里面
四:href/js输出
Href输出
输入的内容最终会到达<a>标签 href属性,且支持JavaScript协议来执行js即可以弹窗。输入javascript:alert(111)即弹窗,脚本执行
Js输出
会把输入的变量放到js里面去,构造下面的代码x'</script><script>alert('xss')</script>'即可弹窗。
欢迎大家批评指正!