dvwa-XSS(反射跨站脚本)

原理:

XSS攻击需要具备两个条件:

1.需要向web页面注入恶意代码

2.这些恶意代码能够被浏览器成功的执行

XSS反射型漏洞

反射型XSS的触发有后端的参与,而之所以触发XSS是因为后端解析用户在前端输入的带有XSS性质的脚本或者脚本的data URI编码,后端解析用户输入处理后返回给前端,由浏览器解析这段XSS脚本,触发XSS漏洞。

基本原理就是通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特定的代码参数会被HTML解析,执行,如此就可以获取用户的COOIKE,进而盗号登陆。

low

核心代码

<?php
 
header ("X-XSS-Protection: 0");

 if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
 
?>

分析: 

服务器并没有对 name 参数做任何的过滤和检查。

1.先输入1,发现是原封不动的将我所输入的,完全输出了。

 2.于是用<script>alert(/50zky/)</script> 浅试一下,成功了。

 3.试着获取cookie    <script>alert(document.cookie)</script>   也是ok的。

medium  

核心代码

<?php
 
header ("X-XSS-Protection: 0");
 
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Get input
//将输入中的<script>转化为空
    $name = str_replace( '<script>', '', $_GET[ 'name' ] );
 
    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}
 
?>

分析:

将script过滤掉了。

1.大写绕过  <SCript>alert(/50zky/)</script>

2. 双写绕过  <scri<script>pt>alert(/50zky/)</script>  同样可以。

 

 high

 核心代码

<?php
 
header ("X-XSS-Protection: 0");
 
// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {

    $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] );
 
    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}
 
?>

 分析:

preg_replace() 函数执行一个正则表达式的搜索和替换,“*” 代表一个或多个任意字符,“i” 代表不区分大小写。也就是说 “< script >” 标签在这里被完全过滤了,但是我们可以通过其他的标签例如 img、body 等标签的事件或者iframe 等标签的 src 注入 JS 攻击脚本。

使用 <img src="#" οnerrοr=alert(1)>


 

 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' );
 
    $name = htmlspecialchars( $_GET[ 'name' ] );
 
    // Feedback for end user
    echo "<pre>Hello ${name}</pre>";
}
 
// Generate Anti-CSRF token
generateSessionToken();
 
?>

分析:

htmlspecialchars() 函数用于把预定义的字符 "<" 和 ">" 转换为 HTML 实体,防止了我们注入 HTML 标签。htmlspecialchars 函数会将 < 和 > 转换成 html 实体而不是当做标签,所以我们插入的语句并不会被执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值