dvwa靶场的简单练习

2023-11-05

此文章仅为记录自己打靶场的过程

一、dvwa靶场的搭建

(1)phpstudy的下载安装以及配置

  1. 下载phpstudy,官网链接:小皮面板(phpstudy) - 让天下没有难配的服务器环境! (xp.cn)

  1. 下载好后直接安装,选盘看个人喜好,安装后如图

3.先启动Apache和MySQL服务之后点击网站

4.管理->打开网站

5.打开如图则创建成功

(2)dvwa的下载安装以及配置

  1. 下载dvwa,官网可能打不开,所以直接使用下载链接下载即可

下载链接:https://codeload.github.com/ethicalhack3r/DVWA/zip/v1.9

  1. 解压到phpstudy安装目录下的WWW文件夹内

3.想改名可以改一下,我就把DVWA-master改成了dvwa,后续方便些

4.将DVWA文件夹里的config文件夹中的文件进行如图所示操作

5.然后用记事本打开config.inc.php文件,

6.将

$_DVWA[ 'db_user' ] = 'dvwa';

$_DVWA[ 'db_password' ] = 'p@ssw0rd';

修改为

$_DVWA[ 'db_user' ] = 'root';

$_DVWA[ 'db_password' ] = 'root';

(怕写错可以直接把上面两行复制粘贴过去)

修改后退出保存即可

7.看一下使用的php的版本,如果是新下的那应该跟我一样只有一个

8.然后按着如图路径找到对应版本php的文件夹下的php.ini文件

9.打开浏览器输入网址http://localhost/dvwa/setup.php

10.红字部分提示修改东西,要修改的就是上一步找的文件,使用记事本打开后按ctrl+f即可打开搜索框

11.输入"allow_url_fopen"搜索,然后修改成如图的样子,退出保存后靶场就搭建完成了

二、Brute Force模块的练习

low难度

  1. 先把难度调到“low”

2.打开burp suite,burp suite资源地址:https://www.52pojie.cn/thread-1580837-1-1.html

安装方法链接里有,不在赘述,网络资源,不确定有无后门,请尽量在虚拟机中使用

3.proxy模块options里面如果有图中的IP和端口就不用管了,没有就点击add添加

4.在如图模块里创建数据库,跟下图一样即为成功

5.输入amdin,密码随便输入,这里账户就默认知道了,不然账户也设置变量就太麻烦了

6.如果发现burp suite抓不了本地包,就把链接里的local host改成本机的ipv4

参考这个链接Burp Suite抓不了DVWA本地包localhost127.0.0.1的解决办法_归去来兮-zangcc的博客-CSDN博客_burpsuite抓不到127.0.0.1的包

7..点击行动,然后发送到测试器,也就是intruder模块

8.先点击清除,然后把“password=”后面的部分框起来然后点击添加

9.点击payloads,然后点击载入中,我找的bp资源里给了密码本,随便找一个差不多的就行,然后点击开始攻击

10.然后照着下图操作即可

11.找到准确的响应之后查看请求,得到密码是“password”

medium难度

1.先看一眼源码,比low难度增加了两处,一处是转义可以符号,一处是睡眠

2.但是暴力破解还是能做的,具体的步骤与之前一样,只是耗时会增加,这里便不在赘述,为了节省时间随便写了几个payload,只是为了演示一下结果

3.结果如下,还是长度不一样的是对的

high难度

1.先看源码,保留睡眠而且增加了token,关于token的相关知识可以看这个文章,链接:什么是token?token是用来干嘛的?_儒雅的烤地瓜的博客-CSDN博客_token有什么用

2.那么就要设置两个payload的,一个是密码,一个是token,先抓包然后发送到测试模块,然后更改模式和添加payload

3.因为有睡眠,不想浪费时间就随便写了几个,同时带了正确的密码

4.进入资源池设置,创建一个只有一个并发的资源池

5.进入options,找到grep-extract点击添加

6.按着如图顺序进行操作

7.依旧如图操作,然后点击开始即可

8.还是找长度不一样的

三、Command Injection模块的练习

low难度

1.页面上写着让ping一个地址,那就ping一下自己“127.0.0.1”,然后出现乱码

2.稍微查了一下原因,是编码格式的问题,将如图所示路径下文件

3.使用替换功能将所有“utf-8”替换为“gbk2312”,然后退出保存即可

4.重新提交后,不是乱码了,正常了

5.在往下进行之前,要先了解一下命令注入的原理,可以参考这个链接:常见的Web漏洞——命令注入_江左盟宗主的博客-CSDN博客_webmin命令注入漏洞

大概原理就是直接执行了IP后面的命令

6.查看IP“127.0.0.1&ipconfig”

7.查看当前用户“127.0.0.1&whoami”

medium难度

  1. 查看源码,过滤了&&和;,那就不用这两个,用管道

2.管道的原理也可以看low难度的那个文章,而且只过滤了“&&”,可没过滤“&”,所以后者也能用

high难度

1.查看源码,这次过滤的就有点多了,但是过滤的是“| ”,不是“|”,前者多个空格,所以还是能使用管道

2.命令以及结果如图

四、Cross Site Request Forgery (CSRF)模块的练习

low难度

1.输入密码和确认密码

2.查看url,发现是get方法,把密码和确认密码直接放在url里面了

3.也就是说只要更改参数就能实现修改密码的功能,再联想一下这个模块名字,跨站请求伪造,也就是说只要做一个相同排版的界面,让用户点击我们提前设置好的链接,那么就可以将用户的密码改成我们的,但是怎么样才能让用户点击那么长的url哪?使用短链接生成器(百度即可)

4.在浏览器里面粘贴并转到缩短后的网址,发现和之前一样,证明短链接有效

medium难度

1.输入之后发现还是get提交

2.把url复制之后直接访问试一试

3.提示不行

4.看一下源码,有个stripos函数

5.百度一下stripos,大概意思就是对比refer和host,refer里面有host就可以了

6.抓一下不行的包,直接把之前的refer复制下来粘贴上去就行了

7.如图操作

8.发现成功了

high难度

1.查看源码,看到个老朋友,token

2.安装一个burp suite提供的模块“CSRF Token Tracker”

3.然后抓包,复制token,去CSRF Token Tracker

4.然后如图所示配置

5.再把刚才抓的包发送到重发器,点击发送就成功了

6.总结:high难度的csrf主要是需要拿到token,一般的做法是利用xss拿到,而单单仅是打打靶场就没必要那么麻烦了,甚至其实更简单一点甚至可以跟medium难度的做法一样,抓包加个refer就行。

这里主要是学习csrf的攻击思路,攻击者通过一些方法,代理抓包也好,脚本也好,xss也好,就是为了拿到token以及cookie等能证明身份的东西,说白了就是利用用户的登录状态,将伪装好的链接或者其他恶意代码伪装成图片资源或者跳转链接(所以网页上的广告链接千万别点!)用来获取刚才说到的东西,最后直接进行修改密码或者其他操作

五、File Inclusion模块的练习

low难度

1.总共列出了三个文件,让我们选择,随便选择一个

2.选择之后发现get方法获取文件名,随便改一个文件名然后发现警告直接给出了文件路径

3.拿到路径那之后就是发挥想象力的时候了,猜一猜有没有phpinfo.php、php.ini之类的

medium难度

六、File Upload模块的练习

low难度

1.先来个一句话木马

2.上传该文件(Windows自动报毒最开始直接删了(脏话)),甚至贴心的提供了路径,他温我哭

3.用蚁剑链接,IP是文件的路径,密码是一句话木马里面中括号括起来的“attack”(可以改别的)

4.添加之后双击就能查看所有文件了

七、Insecure CAPTCHA模块的练习

low难度

1.没什么别的提示,只有输入框,那就看看url,一个路径

2.按着这个路径找到了验证源码,这里验证四个参数

3.随便输入个密码然后抓包看看,第一个参数不是2,改成2之后放包

4.修改成功

5.点击logout退出重新登录,密码已经被修改

八、SQL Injection模块的练习

low难度

1.low难度,应该啥都没过滤,那就玩点暴力的,bp抓包

2.先随便输入点什么,我输入的0,所以要替换的就是这里了,发送到测试器

3.网上找了一个注入字典,练习Brute Force模块的时候写过完整步骤,这里不再赘述

字典链接:SQL注入万能密码字典_JacobTsang的博客-CSDN博客_sql注入字典

长度最短的都是这种报错,那就直接不看,看最长的,果然,直接都暴漏出来了,原理不是这里一句两句能说清的

九、SQL Injection (Blind)模块的练习

low难度

准备阶段:盲注就得借助工具了,在Windows虚拟机上装sqlmap就太麻烦了,所以我又在kali上装了个dvwa。参考教程:Web渗透实训——kali环境搭建+phpstudy+dvwa_林南溪的博客-CSDN博客_kali自带phpstudy这个教程里面设置dvwa参数的文章没有了,看别的也一样

1.输入1’ and 1=1#显示存在,输入1’ and 1=2#也显示存在,根据下图表格,所以是字符型

2.先抓个包,将圈出来的所有复制

3.创建一个txt文件,把复制的放进去

4.打开控制台输入命令“sqlmap -r 1.txt -dbs --batch ”

5.这里已经拿到了库名

6.然后输入这个命令“sqlmap -r 1.txt -D dvwa -dump-all --batch“就能拿到表的数据

十、Weak Session IDs模块的练习

low难度

1.准确的说这个模块不能叫练习,这个模块大概是能拿到cookie,抓包可以抓到cookie,然后就可以直接登录被抓的用户的界面,这里看一下源码。大概意思是统计点击的次数,说白了和直接写1,2,3,4没啥区别,很容易伪造

十一、DOM Based Cross Site Scripting (XSS)模块的练习

low难度

1.先看源码,没有过滤,那网上找个简单的就行了

2.第一张是原url,第二个是我加了代码之后的,就是把“English”替换成“<script>alert('你中病毒了2333')</script>”

十二、Reflected Cross Site Scripting (XSS)

low难度

1.让输入名字,查看源码,没有过滤

2.输入“<script>alert('xss')</script>”,发现已经拿到了用户的cookie

十三、Stored Cross Site Scripting (XSS)模块的练习

low难度

1.两行输入,第一行发现有长度限制,没事,我们可以在第二行写payload“<script>alert(1)</script>”

2.提交之后如图

3.提交成功后,无论输入什么都只会输出1 了,因为存储型xss会把恶意代码放入数据库,所以无论提交什么数据都会执行这一个代码,如图,两行均输入2,但是显示1

十四、Content Security Policy (CSP) Bypass模块的练习

low难度

准备阶段:这个模块有点特殊,先简单说一下csp,简单来说就是白名单,白名单里的可以信任,那么我们便可以在白名单做点手脚,比如加白名单,或者对白名单里面的网址做一点手脚

1.看一下源码,框起来的部分就是白名单

2.这里有dvwa直接准备好的,已经构建好的url

3.打开看一下,就是构造好的payload

4.可以直接用,也可以自己去对应网站创建,我就直接用了,复制然后粘贴进去点include即可,都是没有弹窗,我去看了一下别的博主的解释说是这个网站是米国的,返回较慢,所以没弹窗

十五、JavaScript Attacks模块的练习

low难度

1.题目提示输入success即可,输入后显示错误,好吧,果然没那么简单,看一下源码,后台想要的是md5(rot13("success"))

2.打开f12进入控制台,使用一下md5(rot13("success")),查看一下后台想要的结果应该是什么,记下这一串

3.抓一下包,发现提交的不一样,那就改了然后提交

4.成功了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dvwa靶场的简单练习 的相关文章

  • 如何从 mysql 数据库中提取数据并使用 D3.JS 进行可视化?

    我有一个数据库MySQL我想在其中可视化D3 JS 为了做到这一点 首先我想parse中的数据JSON格式 然后编写一个基本代码 从数据库中提取数据并使用D3 JS 我环顾四周 但找不到我想要的东西 因为我是新手D3 JS 我怎样才能做到这
  • 交叉表的动态 MySQL 查询/视图

    我目前有一个带有以下 sql 的硬编码视图 select username case user role role id when 1 then true else false end as ROLE SUPER case user rol
  • Laravel 5.2 中使用多个 MySQL 数据库连接查询关系存在

    我正在处理以下情况 我有两个模型 一个Employee with id and name字段和一个Telephone with id employee id and flag字段 还有一个一对多关系在这两种模型之间 即一个员工可能拥有多部电
  • 如何在我的查询中使用日期格式?

    这适用于 phpmyadmin 但是当我在代码上使用时给我一个错误 错误说 解析错误 语法错误 意外的 我的语法有什么问题 gt
  • 复制具有不同列名的 MySQL 表

    我需要将 table1 中与特定列匹配的所有行复制到具有不同列名称的 table2 中 例如 table1 name oldAddressBook table1 的列 name Name Surname Number table2 name
  • 如何在每次运行 python 程序时添加新列

    我希望我的表的第一列作为卷号 第二列作为名称 每当我运行 python 程序时 我想在表中添加一列日期 在这个新列中 我想填充从 user list 获得的列表将包含值 P A P P 等 如何处理 我尝试首先通过 alter 命令添加一列
  • 如何反转散列和加盐密码? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 vBulletin 登录使用它来交叉引用数据库 md5 md5 pass salt 我如何制作一个 PHP 脚本 以便每个密码
  • PHP 插入中的 mysqli_affected_rows

    我有这个代码 if mail to subject message headers insert member sql INSERT INTO members id username VALUES id username insert me
  • 在表中添加新列,其值取决于同一表中另一列的值

    我是 Mysql 的新手 我想在表中添加一列 其值取决于同一个表中的另一个列值 例如我有company table如下 fldId companyName date 1 adeco 2012 01 12 2 mic 2001 03 09 3
  • MySQL表按时间戳分区

    我已经对表进行了分区 由于内存不足错误 表太大 我已将其分区在时间戳列上 如下所示 CREATE TABLE test fname VARCHAR 50 NOT NULL lname VARCHAR 50 NOT NULL dob time
  • MySQL 查询性能有帮助,许多相同的表被连接

    我正在编写一个创建 SQL 查询的 PHP 脚本 该脚本和数据库用于 Joomla CMS 特别是它查询 SOBIPro 组件的表 以使用在此组件中输入的数据 然而 由于 SOBI Pro 表的处理方式 字段的每个实例都是表中自己的行 这意
  • 使用 MySQL 生成唯一且随机的代码数字

    初始目标 我想在表中生成随机且唯一的代码 6 位数字 我使用像这样的 SQL 查询来做到这一点 SELECT SUBSTRING CRC32 RAND 1 6 as myCode FROM codes HAVING myCode NOT I
  • 更改 MySQL 中的列名称 [重复]

    这个问题在这里已经有答案了 搜索后我不知道我需要在 ALTER TABLE 中做什么genres更改列id to genre id有任何想法吗 alter table genres change id genre id int 10 aut
  • 如何在MySql中将bool转换为int

    我是 MySql 的新手 所以我不知道很多东西 比如数据类型的转换 如何在 MySql 中将 bool 转换为 int 还有如何在 MySql 中将十进制转换为 Int 将布尔值类型转换为整数 SELECT CAST 1 1 AS SIGN
  • 将 1 添加到字段

    如何将以下 2 个查询变成 1 个查询 sql SELECT level FROM skills WHERE id id LIMIT 1 result db gt sql query sql level int db gt sql fetc
  • 尝试访问从资产复制到数据\数据\的数据库中的DatabaseHelper时出现空指针异常

    我有一个数据库助手类 代码如下 这个助手的类任务是将数据库从应用程序附带的资产文件夹复制到我的应用程序的 data data 中 以便我可以使用它 一旦我将数据库放入 data data 我能够 我想添加它并执行 CRUD 操作 并且该数据
  • sudo yum install postfix mysql-libs 错误

    我正在尝试通过 yum 安装 postfix sudo yum install postfix 运行下面的代码后 出现以下错误 Loading mirror speeds from cached hostfile rpmforge mirr
  • 将包含 sum 和 group_concat 的 mysql 查询转换为 mongodb 查询

    我想将下面的 mysql 查询转换为 mongodb 查询 SELECT substring o schedule datetime 1 4 Year SUM IF o order status in SUCCESS SUCCESS 1 0
  • Hibernate:尝试获取锁时发现死锁

    我在我的项目中使用休眠 并且对于非常简单的数据库操作 我遇到了随机的明显死锁 有一个堆栈跟踪 https gist github com knyttl 8999006 https gist github com knyttl 8999006
  • php 排序比 mysql“order by”更好吗?

    我想知道 就性能而言 并考虑在具有非常非常多 gt 1 000 000 记录的表上进行mysql选择 使用sql order by 对结果进行排序或在查询后使用经典编程排序对结果进行排序是否更好算法 有人有什么建议吗 Tanks mySQL

随机推荐

  • 力扣468验证IP地址C++判断合法IP字符串

    目录 前言 题目描述 解题思路 主功能函数分类大框架 判断IPv4是否合法 判断IPv6是否合法 其余小边界条件 调试后得 完整代码 前言 这是一道常见的笔试面试题 我找实习已经碰到两次了 和矩阵的乘法出现频率一样高 你校招要是全程没遇到可
  • 科技云报道:AI+云计算共生共长,能否解锁下一个高增长空间?

    科技云报道原创 在过去近一年的时间里 AI大模型从最初的框架构建 逐步走到落地阶段 然而 随着AI大模型深入到千行百业中 市场开始意识到通用大模型虽然功能强大 但似乎并不能完全满足不同企业的个性化需求 大模型技术的安全性 解释性 易用性等综
  • 刚打开虚拟机后出现无法连接网络问题的解决办法 ping name or service not known

    在VMware WorkStation中创建了一个新的Linux CentOS7虚拟机后 发现无法连接网络 ping不通 ping www baidu com显示 ping name or service not known 经高人指点后
  • SonarQube之Mysql安装

    Mysql 从5 1升级到5 6安装 转 https www cnblogs com 007sx p 7083143 html 一 检查系统是否安装其他版本的MYSQL数据 yum list installed grep mysql yum
  • 四种常用的容器(ArrayList,LinkedList,HashSet,HashMap)的基本方法和基本概念

    1 小王有很多1毛 2毛 5毛的旧钞票 现在想分类并清点一下每种钞票有多少张 一共有多少张 请用HashMap建立数据结构 帮他一起清点吧 程序的输入 通过键盘输入若干行 每一行代表某一张旧钞票的面额 直到输入为 1为止 程序的输出 打印每
  • 知识图谱构建技术一览 #CSDN博文精选# #高效学习法# #系统化学习# #IT技术学习#

    大家好 我是小C 又见面啦 文章过滤器 精选大咖干货 助力学习之路 5天20篇CSDN精选博文带你掌握系统化学习方法 专栏将挑选有关 系统化学习方法 的20篇优质文章 帮助大家掌握更加科学的学习方法 在这里 你将收获 快速掌握系统化学习的理
  • 【C语言】希尔排序

    一 算法描述 希尔排序是直接插入排序的升级版 相隔相同步长的进行插入排序 每次循环中步长减半 直到步长为1 二 希尔排序代码 void shell int p int n int step temp 0 i j for step n 2 s
  • RocketMQ学习笔记(实操篇)

    目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使
  • Java读写Excel

    一 Excel基本概念 Workbook 工作簿 代表一个Excel文件 Excel分为两种 后缀名为xls的HSSFWorkBook 2003版本及以前 和后缀名为xlsx的XSSFWorkBook 2007版本及以后 Sheet 表格
  • 解决vscode中不能使用yarn命令

    由于vscode中的集成终端使用的是powershell 所以我们要设置一下powershell的执行权限 解决方法 进入C Windows System32 WindowsPowerShell v1 0目录 找到powershell ex
  • Python使用defaultdict解决字典默认值的问题

    文章目录 1 导入defaultdict 2 创建defaultdict 3 使用defaultdict 4 添加defaultdict默认值 5 结论 在Python中 defaultdict是一种特殊类型的字典 它可以自动为字典中不存在
  • C++学习——拷贝构造,拷贝赋值,静态变量,单例对象,成员指针

    十七 拷贝构造和拷贝赋值 1 浅拷贝和深拷贝 1 如果类中包含指针形式的成员变量 缺省的拷贝构造函数只是复制了指针本身 而没有复制所指向的内容 这种拷贝方式称为浅拷贝 2 浅拷贝会导致不同的对象之间的数据共享 如果数据在堆区 析构函数还会引
  • K8s系列---【资源不足:0/3 nodes are available: 1 Insufficient cpu, 2 node(s) had taint {node-role.kubernetes...

    1 背景 我用KubeSphere创建了一个工作负载 在增加副本数量时 报了下面的错 2 报错 0 3 nodes are available 1 Insufficient cpu 2 node s had taint node role
  • python中的insert函数_Python 列表 insert() 使用方法及示例

    Python 列表 insert 使用方法及示例 insert 方法将元素添加到列表中的指定索引处 insert 方法的语法是list insert index element insert 参数 insert 函数采用两个参数 index
  • The connection to the server localhost:8080 was refused - did you specify the right host or port?解决

    问题分析 环境变量 原因 kubernetes master没有与本机绑定 集群初始化的时候没有绑定 此时设置在本机的环境变量即可解决问题 问题图片 解决方式 步骤一 设置环境变量 具体根据情况 此处记录linux设置该环境变量 方式一 编
  • ubuntu中自带的ufw防火墙

    ufw是一个基于主机的 host based iptable防火墙 我使用的操作系统是Ubuntu10 04 ufw防火墙是默认安装的 下面是我用到的一些ufw命令 根据man文档整理 1 查看防火墙的状态 sudo ufw status
  • 2014年3月3日星期一(DEMO8-3,ALPHA混合)

    单位的电脑运行DX11时 好多问题 但是没法上网 因此 以后在家进行DX11 在单位进行软引擎 因为一是以后会有大例子 需要较长时间 二是从书上看的东西 问题的解决方法不用在网上找 大不了拷到优盘里 言归正传 进行8 3 实际上是ALPHA
  • Qt中的窗口类及其特点

    目录 常用的窗口类 窗口的显示内嵌窗口 QWidget内嵌窗口演示 QWidget不内嵌窗口演示 QDialog类型的窗口特点 QMainWindows窗口的特点 总结 常用的窗口类 常用的窗口类有 3 个 在创建 Qt 窗口的时候 需要让
  • 不出意外的话,2023年是AI大模型元年

    这两天听的最多的新闻莫过于 谁谁谁 AI 大模型 面向全社会开放使用 文心一言 WPSAI 讯飞星火 百川智能等等 2023年 AI大模型注定在历史上增添了浓妆淡抹的一幕 未来 AI 将与各个软件应用如影随形 如云计算一般成为基础能力 按照
  • dvwa靶场的简单练习

    此文章仅为记录自己打靶场的过程 一 dvwa靶场的搭建 1 phpstudy的下载安装以及配置 下载phpstudy 官网链接 小皮面板 phpstudy 让天下没有难配的服务器环境 xp cn 下载好后直接安装 选盘看个人喜好 安装后如图