dvwaXSS

什么是XSS

跨站脚本攻击,相当于再代买中注入恶意的脚本,当用户访问页面时,再浏览中出发并解析代码,完成攻击
分为反射型XSS、存储型XSS、Dom型XSS

常用的构造语句

注意:下列代码中的空格要去掉

  • < script>alert(‘xss’)< /script>
  • '>< script>alert(document.cookie)< /script>
  • < IFRAME SRC=javascript:alert(‘xss’)< / IFRAME >//框架注入
  • “>< BODY ONLOAD=“a();”>< script>function a(){alert(‘XSS’);}< /script><”
  • < A HREF=http://127.0.0.1/phpinfo.php>link</ A>//链接注入
  • < img src=1 οnerrοr=alert(2)>
  • < script>confirm(‘xss’)< /script>

反射型XSS-Reflected

low等级

  • 先随意输入一个字符,‘z’

请添加图片描述

  • 输入构造语句

请添加图片描述

  • 出现弹窗

请添加图片描述

  • 查看源码分析

请添加图片描述

medium等级

  • 查看源码分析

请添加图片描述

  • str_replace()字符替换,替换时区分大小写
  • 可以通过双写绕过
  • z<sc< script>ript>alert(document.cookie)</ script>

请添加图片描述

  • 查看与网站cookie一致

请添加图片描述

  • 大写绕过

请添加图片描述

High等级

  • 查看源代码分析

请添加图片描述

  • preg_repalce,执行一个正则表达式的搜索和替换
  • 代码的意思是无数次的匹配大小写
  • 发现过滤了script整个标签
  • 所以构造不包含script的语句
  • <img src=1 οnerrοr=alert(‘zxh’)>

请添加图片描述

Impossible等级

  • 查看源代码分析

请添加图片描述

  • htmlspecialchars()函数把预定义的字符转换成HTML实体
  • 让<、>变成实体能够完全防御XSS

Dom型XSS

是通过url传入参数去控制触发的

low等级

  • 通过url传入构造语句

请添加图片描述

  • 成功弹窗

请添加图片描述

medium等级

  • 打开源码分析

请添加图片描述

  • stripos()函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)
  • 相关函数:strpos()函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
  • 根据代码发现其过滤了<script的大小写
  • 使用<img ,发现不成功
  • 打开网页源代码,应该是<select 未闭合
  • 输入</ select><img src=1 οnerrοr=alert(‘zxh’)>

请添加图片描述
请添加图片描述

High等级

  • 查看源代码分析

请添加图片描述

  • 想办法如何绕过这个PHP文件
  • 利用PHP与HTML的逻辑漏洞
  • PHP中的注释符号有//、#、/**/
  • html中只有<!–
  • url输入#< script>alert(‘zxh’)< /script>

请添加图片描述

  • 没有直接弹窗
  • 但是url上的语句已经注入成功
  • 需要你再次select后
  • 再次注入
  • 才能有English#这个select
  • 弹窗成功

请添加图片描述

Impossible等级

  • 查看代码分析

请添加图片描述

  • 开启了客户端的XSS筛选器

存储型XSS-Stored

low等级

  • 查看代码分析

请添加图片描述

  • 没有任何防御
  • 直接构造语句

请添加图片描述请添加图片描述

  • 它会存储到你的数据库里,每次访问都会弹窗

请添加图片描述

  • 清楚数据

请添加图片描述

请添加图片描述

请添加图片描述

medium等级

请添加图片描述

  • addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
  • 预定义字符是:
  • 单引号(’)
  • 双引号(")
  • 反斜杠(\)
  • NULL
  • strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
  • 注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
  • 注释:该函数是二进制安全的。
  • 看到最后发现在$message使用了htmlspecialchars()
  • 所以message没法注入了
  • $name上只是做了简单的过滤
  • 所以在$name上构造语句
  • $name = str_replace( ‘< script>’, ‘’, $name );
  • 过滤了<script
  • 还发现限制了长度

请添加图片描述

  • 打开开发者工具

请添加图片描述

  • 修改maxlength的值
  • 重新输入构造语句

请添加图片描述

请添加图片描述

请添加图片描述

High等级

  • 查看代码分析

请添加图片描述

  • 一样是直接防御了$message
  • $name过滤了所有的<script

请添加图片描述

请添加图片描述
请添加图片描述

Impossible等级

  • 查看代码分析

在这里插入图片描述

  • 两个参数都防御住了
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值