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

    知识点:堆叠注入。用简单的话来说就是在sql语句中分号(;)标志着一句话的结束,如果在一个sql语句后添加分号(;)并构造一个新的sql语句,那么之前的sql语句和自己所构造的sql语句都会执行,因此造成了sql注入。这种注入方法叫堆叠注入。

     

    进入题目,看到输入框,尝试sql字符型注入1' or '1'='1,发现存在注入

    发现存在字符型注入后用1'or '1' = '1' order by 1#等语句判断字段数,得出字段数为2

     

    使用union select进行联合查询确定显示的字段顺序,发现select等字符被过滤

     

     

    过滤了select,看来想使用联合注入注出数据是不可能的了,于是试试堆叠注入。使用1';show databases;#爆出数据库。

     

    使用1';show tables;#爆出表

     

    使用1';show columns from words;#查询words表中所有字段

     

    使用1';show columns from `1919810931114514`;# 查询1919810931114514表中所有字段,发现flag字段,看来flag就在这个字段里面了。

     

    通过第一步的注入发现默认查询的表是words表,在这题中没有禁用rename。所以我们可以采用修改表名的方法将含有flag的表改为默认查询表,再通过字符型注入注出含有flag表的全部内容得到flag。因此我们将words表名改为word,数字表名改为words,这默认查询的表就是含有flag的表,但是该表没有id列,于是我们将flag字段改为id,即1';rename tables `words` to `word`;rename tables `1919810931114514` to `words`; alter table `words` change `flag` `id` varchar(100);#

     

    最后使用1' or 1=1 #得到flag

     

  • 相关阅读:
    数据结构 AVL树
    数据结构 快速排序
    Mybatis 传递多个参数
    数据结构 二叉搜索树
    Java 多线程 ReadWriteLock
    Java 基础 集合框架
    SourceTree安装跳过注册
    【前端部署】阿里云 windows2019服务器用node部署静态项目
    【node开发】node简易服务器一分钟搞定
    【node开发】node.js编写一个接口
  • 原文地址:https://www.cnblogs.com/Yhck/p/13619745.html
Copyright © 2011-2022 走看看