XSS利用部分程序将包含Javascript等恶意脚本注入,使浏览器执行完成个人的目的
以反射型为例
以输入语句<script>alert(/xss/)</script>为例,
此时会弹出/XSS/的显示框,证明语句被执行。
因为语句中包含<script>能被执行,所以要针对<script>进行过滤,同时需要注意对有些绕过过滤的方法进行处理
单纯过滤<script>标签
函数str_replace()能够对输入的数据中<script>标签替换为空,如图输入
可以得到,绕过了限制规则
但输入复写和大小写后再测试:
复写:
大小写:
就能够轻松的绕过
继续修改脚本:
上述代码,基于正则表达式进行过滤,/i不区分大小写,对“//”内部的内容反复过滤直至不再出现
但设置黑名单的方法具有局限性,上述方法只针对黑名单内部的有效
其他标签就可以轻松绕过;
继续升级版本,如果能将输入的内容只作数据看,而不看作指令就能够避免程序被错误的执行,htmlspecialchars()函数能将预定义字符钻换为HTML实体,使得“<”,“>”,“'”,“"”,“&”失去命令的效果
再输入含标签语句
没有删除“<”等有特殊意义的符号,但依旧不会执行。
在本实验中,如果有输入的字符限制和其他限制可以通过burpsuite抓包进行修改,然后将其传送到服务器即可