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

     

  • 相关阅读:
    求解整数集合的交集(腾讯笔试)
    关于屏幕适配之比例布局
    (转)注册JNI函数的两种方式
    正则表达式记录
    当年一个简单可用的多线程断点续传类
    最近用到的几个工具方法
    Android中包含List成员变量的Parcel以及Parcel嵌套写法示例
    java实现计算MD5
    一个用于去除状态栏和虚拟导航栏的BaseActivity
    MVP的模板
  • 原文地址:https://www.cnblogs.com/Yhck/p/13619745.html
Copyright © 2011-2022 走看看