DVWA靶场-XSS(DOM型、反射型、存储型)

往期博文:

DVWA靶场-Brute Force Source 暴力破解

DVWA靶场-Command Injection 命令注入

DVWA靶场-CSRF 跨站请求伪造

DVWA靶场-File Inclusion 文件包含

DVWA靶场-File Upload 文件上传

DVWA靶场-SQL Injection SQL注入

DVWA靶场-Weak Session IDs 脆弱的Session

靶场环境搭建

https://github.com/ethicalhack3r/DVWA

[网络安全学习篇附]:DVWA 靶场搭建

 

目录

 

DOM XSS DOM型XSS

LOW DOM XSS

核心代码:

Medium DOM XSS

核心代码:

绕过方法:

High DOM XSS

核心代码:

绕过方式

Impossible DOM XSS

核心代码:

Reflected XSS 反射型XSS

Low Reflected XSS

核心代码

Medium Reflected XSS

核心代码

绕过方法

High Reflected XSS

核心代码

Impossible Reflected XSS

核心代码

Stored XSS 存储型XSS

Low Stored XSS

核心代码

trim

stripslashes

mysql_real_escape_string

Medium Stored XSS

核心代码

addslashes

strip_tags

htmlspecialchars

绕过方法

High Stored XSS

核心代码

Impossible Stored XSS

核心代码


DOM XSS DOM型XSS

LOW DOM XSS

核心代码:

                 

Please choose a language:

DOM XSS 是通过修改页面的DOM 节点,会通过select 按钮创建新的DOM节点

document.write("");

document.write("");

这里的lang 变量没有进行任何过滤,就解码输出在option 标签中,直接攻击

?default=

DVWA靶场-XSS(DOM型、反射型、存储型)_第1张图片

 

Medium DOM XSS

核心代码:

这段代码会过滤default 提交参数中的”

绕过方法:

1、img标签

首先将option标签和select 标签闭合,

?default=English

DVWA靶场-XSS(DOM型、反射型、存储型)_第2张图片

2、利用input 标签

?default=English

DVWA靶场-XSS(DOM型、反射型、存储型)_第3张图片

 

High DOM XSS

核心代码:

 这里使用白名单过滤规则,凡是不在白名单中的,强制修改其为English

绕过方式

1、&

?default=English&

DVWA靶场-XSS(DOM型、反射型、存储型)_第4张图片

?default=English&

DVWA靶场-XSS(DOM型、反射型、存储型)_第5张图片

2、#

?default=English#

DVWA靶场-XSS(DOM型、反射型、存储型)_第6张图片

?default=English#

DVWA靶场-XSS(DOM型、反射型、存储型)_第7张图片

 

Impossible DOM XSS

核心代码:

                 

Please choose a language:

分析代码可知,impossible 没有对输入的参数进行URL解码,这样自然就导致无法XSS

document.write("");

document.write("");

 

Reflected XSS 反射型XSS

Low Reflected XSS

核心代码

Hello ' . $_GET[ 'name' ] . '
'; } ?>

可以看出没有对变量name 的输入做任何的过滤,直接攻击

DVWA靶场-XSS(DOM型、反射型、存储型)_第8张图片

 

Medium Reflected XSS

核心代码

', '', $_GET[ 'name' ] ); 

    // Feedback for end user

    echo "
Hello ${name}
"; } ?>

这里使用str_replace() 函数对name 变量中的敏感字符

DVWA靶场-XSS(DOM型、反射型、存储型)_第9张图片

2、大小写

DVWA靶场-XSS(DOM型、反射型、存储型)_第10张图片

3、尝试使用其他标签

DVWA靶场-XSS(DOM型、反射型、存储型)_第11张图片

DVWA靶场-XSS(DOM型、反射型、存储型)_第12张图片

 

High Reflected XSS

核心代码

Hello ${name}
"; } ?>

这里对

DVWA靶场-XSS(DOM型、反射型、存储型)_第15张图片

 

Medium Stored XSS

核心代码

', '', $name );

    $name = mysqli_real_escape_string($name );

    // Update database

    $query  = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; 

} 

?>

addslashes

addslashes(string)

在预定义字符前添加反斜杠

预定义字符 ' " \ NULL

strip_tags

strip_tags(string,allow)

去除字符串中的HTML、XML、PHP 的标签

allow 参数可选,规定允许这些标签

htmlspecialchars

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

把预定义的字符转换为HTML实体

预定义字符 & " ' < >

 

可以看到对message 变量过滤的很彻底,但是对name变量,只对其进行简单的过滤

但是我们的浏览器本地对name参数的输入的字符长度做了限制,这个简单,本地浏览器手动修改

DVWA靶场-XSS(DOM型、反射型、存储型)_第16张图片

也可以使用BP抓包,修改name参数值之后提交

 

别忘了!!!

DVWA靶场-XSS(DOM型、反射型、存储型)_第17张图片

 

绕过方法

1、嵌套

name ript>alert(/XSSMED1/)

message XXX

2、大小写

name

message XXX

3、其他标签

name

message XXX

DVWA靶场-XSS(DOM型、反射型、存储型)_第18张图片

 

High Stored XSS

核心代码

 

分析代码,发现这里message 是没有希望了,继续看一下name,发现还有绕过的希望

name

message xxx

DVWA靶场-XSS(DOM型、反射型、存储型)_第19张图片

 

Impossible Stored XSS

核心代码

prepare( 'INSERT INTO guestbook ( comment, name ) VALUES ( :message, :name );' );

    $data->bindParam( ':message', $message, PDO::PARAM_STR );

    $data->bindParam( ':name', $name, PDO::PARAM_STR );

    $data->execute();

} 

// Generate Anti-CSRF token

generateSessionToken();

?>

 message和name变量都进行了严格的过滤,而且还检测了用户的token,没得办法!


https://www.sqlsec.com/2020/05/dvwa.html#toc-heading-31

https://www.freebuf.com/articles/web/119467.html

你可能感兴趣的:(DVWA,千峰网络安全视频笔记篇,靶机实战)