DVWA之XSS

这篇博客详细介绍了DVWA中的三种XSS攻击类型:反射型、存储型和DOM型,包括各种安全级别下的攻击手段与防御策略。在反射型XSS中,作者展示了如何通过双写和大小写绕过过滤。存储型XSS部分讨论了不同安全级别下如何利用和绕过过滤。最后,DOM型XSS解释了其与前两者的主要区别,并探讨了客户端防护机制。
摘要由CSDN通过智能技术生成

Reflected Cross Site Scripting (XSS)

low
在这里插入图片描述直接尝试<script>alert('xss')</script>
在这里插入图片描述弹窗成功

medium

还是先尝试<script>alert('xss')</script>

在这里插入图片描述
发现并没有弹窗但页面显示了Hello alert('xss')
猜测是<script>被删除

看波源码

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
   
    // Get input
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?> 

可见str_replace函数将<script>删除

那可以尝试一下双写或者大小写绕过

因为删除的是<script>所以双写时尝试<s<script>cript>进行绕过

使用

<s<script>cript>alert('xss')</script>

成功绕过

在这里插入图片描述
再来尝试一下大小写<SCript>alert('xss')</script>

在这里插入图片描述成功

high

同样先尝试<script>alert('xss')</script>

在这里插入图片描述
发现页面显示除了hello只有>

猜测也是将某个关键词过滤了

看波源码

<?php

header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
   
    // Get input
    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

?> 

preg_replace函数执行一个正则表达式的搜索和替换,也就是<,s,c,r,i,p,t均被替换为空,双写大小写绕过均不能使用

遇到这种情况一般要考虑使用input标签的一些特殊事件来执行js代码,如onfocus事件onmouseover事件

尝试onfocus=javascript:alert('xss')发现行不通。。
在这里插入图片描述

再来尝试换一个标签来执行js代码,构造a标签再尝试利用a标签的href属性执行js代码<a href=javascript:alert('xss') > xss</a>

也不行。。
在这里插入图片描述这里还要换标签
可以通过img、body等标签的事件或者iframe等标签的src注入的js代码

使用<img src=1 onerror=alert('xss')>
在这里插入图片描述成功

impossible

老样子尝试<script>alert('xss')</script>
在这里插入图片描述会发现全显示了

看源码

<?php

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
   
    // Check Anti-CSRF token
    checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

    // Get input
    $name = htmlspecialchars( $_GET[ 'name' ] );

    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}

// Generate Anti-CSRF token
generateSessionToken();

?> 

原因是htmlspecialchars<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值