xss 全编码两次_DVWA-XSS分析

d35eb42d9f646abeff356ab444f86c92.png

XSS(跨站脚本攻击)

​ 进行跨站脚本攻击时,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

XSS(Reflected)

Security Level Low

​ 直接输入<script>alert('XSS')</script>,实现弹窗,并没有发现过滤。

Security Level Medium

​ 输入<script>alert('XSS')</script>,没有弹窗,而是给出回显Hello alert('XSS')。猜测过滤掉了<script>标签对。

​ 尝试双写script绕过,不行。要内嵌<script>,标签<scr<script>ipt>alert('XSS')</sc<script>ript>

Security Level High

​ 输入<script>alert('XSS')</script>被过滤得只剩下>,尝试输入<script,全被过滤了。输入<script></script>123123,回显>123123

​ 初步猜测过滤了<script></script>标签对之间的内容。那就不用script呗。。

​ 输入<img src=1 onerror=alert('xss')>,插入一张图片,他的连接(src)为“1”(或者其他什么奇奇怪怪反正就会出错的),如果找不到(出错),就弹窗。

Security Level Impossible

​ (挠头)

XSS (Stored)

Security Level Low

​ 直接输入 <script>alert('XSS')</script>,实现弹窗,并没有发现过滤。

Security Level Medium

​ 直接输入<script>alert('XSS')</script>,剩下alert('XSS')。输入<>,被过滤。

​ 发现"被转义了。

​ 猜测是尖括号对里面的内容过滤了。

​ 查看源码(=_=),发现$message = htmlspecialchars( $message );,内容框里面的内容被编码了,估计是没办法从这里着手。

​ 再看,发现名字栏的过滤并不严谨,$name = str_replace( '<script>', '', $name );,只是把<script>标签替换成空格,尝试双写<script>,发现输入框并不够长。。。

​ 抓包试试看咯,抓包,修改名字栏<scr<script>ipt>alert('xss')</scr<script>ipt>,实现弹窗。

Security Level High

​ 查看源码,$message = htmlspecialchars( $message );,$name = preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );

​ 判断还是从名字栏注入,过滤了script标签,那就不用这个标签了咯。

​ 抓包,修改成<img src=# onerror=alert('xss')>, 弹窗。

XSS (DOM)

Security Level Low

​ 直接在地址栏上修改dvwa/vulnerabilities/xss_d/?default=Spanish<script>alert('xss')</script>,实现弹窗。

Security Level Medium

​ 查看源码发现过滤了script标签,改用img 标签。。但是就死活弹不出窗。。。

​ 后来发现要先闭合原来的标签对,再插入img标签。script标签是javascript的标签,img 是html的标签。

​ 例子:

    <select>
        <option value ="volvo">Volvo</option>  
        <option value ="saab">Saab</option>  
        <option value="opel">Opel</option>  
        <option value="audi"></option></select><img src='' onerror='alert(123)'></option>
    </select>

Security Level High

​ 查看源码,利用了case语句来对输入进行筛选。

​ 然后,利用php与javascript注释格式的不一样来进行注入。

​ php在#后面的内容作为注释,也就是说#是作为php的一个注释符。而#在javascript却不是。利用 这个不同点来进行注入,构造内容#<script>alert('xss')</script> 实现弹窗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值