DVWA-XSS (Stored)
目录
- 简介
- 安全级别:Low
- 安全级别:Medium
- 安全级别:High
- 安全级别:Impossible
简介
存储型XSS
长期存储于服务器端;
每次用户访问都会执行脚本代码;
安全级别:Low
查看源码
<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = stripslashes( $message );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Sanitize name input$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Update database$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );//mysql_close();
}?>
源码分析
trim(string,charlist) // 移除string字符两侧的预定义字符。
stripslashes(string) //去除掉string字符的反斜杠\,该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。
mysql_real_escape_string// 转义 SQL 语句中使用的字符串中的特殊字符。
只是对数据库进行了防护,没有考虑到对XSS进行过滤
注入语句
<script>alert('1')</script>
安全级别:Medium
查看源码
if( isset( $_POST[ 'btnSign' ] ) ) { // Get input $message = trim( $_POST[ 'mtxMessage' ] ); $name = trim( $_POST[ 'txtName' ] ); // Sanitize message input $message = strip_tags( addslashes( $message ) ); $message = mysql_real_escape_string( $message ); $message = htmlspecialchars( $message ); // Sanitize name input $name = str_replace( '<script>', '', $name ); $name = mysql_real_escape_string( $name ); // Update database $query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );"; $result = mysql_query( $query ) or die( '<pre>' . mysql_error() . '</pre>' ); //mysql_close();
}
源码分析
strip_tags() // 函数剥去字符串中的HTML、XML以及PHP的标签,但允许使用
<b>
标签。
addslashes() // 函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。
htmlspecialchars(string,flags,character-set,double_encode) // 把预定义的字符转换为 HTML 实体。
由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了<script>
字符串,仍然存在存储型的XSS。
大写绕过,由于输入长度限制,抓包修改name传参(也可以手动审查元素将name的maxlength值调大):
注入语句
<Script>alert('2')</script>
安全级别:High
查看源码
if( isset( $_POST[ 'btnSign' ] ) ) {// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = strip_tags( addslashes( $message ) );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$message = htmlspecialchars( $message );// Sanitize name input$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name );$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));// Update database$query = "INSERT INTO guestbook ( comment, name ) VALUES ( '$message', '$name' );";$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );//mysql_close();
}
源码分析
message变量依然无法注入,name变量正则过滤更加完善,不区分大小写,且使用通配符匹配,导致嵌套构造的方法也不能成功,但依旧可以使用事件类型标签或伪协议的方法
注入语句
<img src=1 onerror=alert(1) />
安全级别:Impossible
查看源码
<?phpif( isset( $_POST[ 'btnSign' ] ) ) {// Check Anti-CSRF tokencheckToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );// Get input$message = trim( $_POST[ 'mtxMessage' ] );$name = trim( $_POST[ 'txtName' ] );// Sanitize message input$message = stripslashes( $message );$message = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $message ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$message = htmlspecialchars( $message );// Sanitize name input$name = stripslashes( $name );$name = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $name ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : ""));$name = htmlspecialchars( $name );// Update database$data = $db->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验证机制,有效地防止了CSRF攻击
DVWA-XSS (Stored)相关推荐
- 【Kali渗透全方位实战】利用Beef进行XSS会话劫持(XSS Stored)
文章目录 1 会话劫持 2 kali中beef的使用 3 开始渗透 2.1 修改dvwa xss stored等级为low 2.2 script 标签 2.3 过程演示 2.4 会话劫持 2.5 换一 ...
- OWASP DVWA XSS reflectedstored全系列
DVWA XSS reflected 测试目标网址:http://192.168.247.150/dvwa/vulnerabilities/xss_r/ low安全级别 直接输入 <script ...
- DVWA——XSS(Reflected)——多种方法实现+详细步骤图解+获取cookie的利用过程演示
一)XSS(Reflected)介绍: 反射型xss(非持久型):需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面.特点:弹窗警告.广告:javas ...
- XSS跨站脚本攻击(DVWA XSS攻击详解、XSS平台搭建)
一.跨站脚本攻击过程 二.XSS攻击定义及危害 三.XSS攻击常见分类 例:反射型 例:存储型 例:DOM型 四.XSS攻击常见编码 例: 编码后: 五.XSS常见测试语句 Script 标签 Scr ...
- DVWA通关--存储型XSS(XSS (Stored))
目录 LOW 通关步骤 源码分析 MEDIUM 通关步骤 源码分析 HIGH 通关步骤 源码分析 IMPOSSIBLE 源码分析 存储型XSS也叫持久型XSS,从名字就知道特征是攻击代码会被存储在数据 ...
- DVWA之Stored XSS(存储型XSS)代码审计
目录 Low Medium Hight Impossible Low 关键源码 trim(string,charlist) : 移除string字符两侧的预定义字符,预定义字符包括\t . \n .\ ...
- DVWA——XSS(Dom lowmedium)
此文章只用于学习,请勿用作其他违法犯罪行为! 以下部分文字内容以图片形式展示,因为JS代码打不上去. 目录 前言 XSS攻击流程 XSS的危害 XSS的漏洞类型 JS基本语句 XSS Dom Low ...
- PHP代码审计DVWA[XSS (DOM)]
XSS (DOM 靶场搭建可用蓝易云服务器
- PHP代码审计DVWA[XSS (Reflected)]
XSS (Reflected)反射型XSS 靶场搭建可用蓝易云服务器
- [Root-me]XSS - Stored 1
个人博客地址 http://www.darkerbox.com 欢迎大家学习交流 Root-me网址: https://www.root-me.org/en/Challenges/Web-Client ...
最新文章
- DecimalFormat格式化输出带小数的数字类型
- 哈工大威海c语言实验报告 第八章 无法运行程序,哈工大威海c语言实验报告.doc...
- 《T-SQL性能调优秘笈——基于SQL Server 2012 窗口函数》——1.2 使用窗口函数的解决方案简介...
- 经济危机拒绝穷潇洒 试水充电战危机
- uva 756—— Biorhythms
- 地球上最神奇的10种物质,打赌你都没见过!
- 单基因gsea_这篇3+分核心基因筛选,点个在看,我们复现这篇文章!
- JAVA 枚举类的初步理解
- Spring的国际化(转载)
- JVM优化系列-Stop-The-World实战
- 数据中台是什么?数据中台应包含什么?来听听袋鼠云合伙人张旭的回答!
- 电子工业出版社博文视点在2010年系统架构师大会上集锦
- 【sklearn第九讲】支持向量机之分类篇
- JDK版本切换——JDK1.1.1
- FPGA芯片内两种存储器资源
- CentOS_7环境搭建L2TP服务器
- ThinkPHP 微信支付及退款
- 【luogu P5055】【模板】可持久化文艺平衡树
- 动听的“教育之歌”,消费金融们的演奏响而不悦耳
- VOD (Video On Demand),视频点播技术
热门文章
- 全网最全开源数据集 | 资源
- Android逆向之分析某锁机恶意软件
- linux中man命令的基本用法,linux中的man命令的详细解释
- DEM: 诊断事件管理 (Diagnostic Event Manager)
- 个人陈述怎么写计算机专业自招,高三自主招生个人陈述范文(最新)
- 基于单片机的超市储物柜设计_基于单片机的超市储物柜控制系统设计.docx
- Python AutoCAD 修改
- Toshiba转换芯片-TC358778XBG:RGB转MIPI DSI芯片资料
- 淘宝关键词API接口
- EDCF阅读笔记:Reinforced Representation Learning for High Performance Visual Tracking