BUUCTF_Web_[SUCTF 2019]EasySQL

BUUCTF_Web_[SUCTF 2019]EasySQL

本关运用到的注入方法为堆叠注入,是个新的知识点,所以本关的wp以做笔记为主。

首先打开靶机

在这里插入图片描述

查看源码之后未发现有可利用信息

所以我们直接尝试注入

输入1,2均有回显,而输入ab均无回显,可发现输入数字有回显,输入字母无回显

输入1'无回显,猜测可能存在注入,但关闭了错误回显

尝试了联合注入、布尔盲注、报错注入、时间注入后,回显均为Nonono,全部排除

查看他人博客后,发现本关运用了堆叠注入

堆叠注入

  • 定义:*Stacked injections(堆叠注入)*从名词的含义就可以看到应该是一堆 sql 语句(多条)一起执行。而在真实的运用中也是这样的, 我们知道在 mysql 中, 主要是命令行中, 每一条语句结尾加; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做 stacked injection。
  • 原理:在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为: Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。
  • 局限性:堆叠注入的局限性在于并不是每一个环境下都可以执行,可能受到API或者数据库引擎不支持的限制,当然了权限不足也可以解释为什么攻击者无法修改数据或者调用一些程序。

堆叠注入查询语句

1、新建一张表:

select * from users where id=1;create table test like users;

2、删除上面新建的test表:

select * from users where id=1;drop table test; 

3、查询数据:

select * from users where id=1;select 1,2,3; 

4、修改数据:

select * from users where id=1;insert into users(id,username,password) values ('100','new','new');

了解上述内容后,进行查询

查数据库:1;show databases;

在这里插入图片描述

查表:1;show tables;

在这里插入图片描述

猜测flag在flag表中的flag字段:1;select flag from flag;

在这里插入图片描述

发现对flag进行了过滤

去其他人的博客找思路吧

这道题目需要我们去对后端语句进行猜测,有点矛盾的地方在于其描述的功能和实际的功能似乎并不相符,通过输入非零数字得到的回显1和输入其余字符得不到回显来判断出内部的查询语句可能存在有||,也就是select 输入的数据||内置的一个列名 from 表名,进一步进行猜测即为select post进去的数据||flag from Flag(含有数据的表名,通过堆叠注入可知),需要注意的是,此时的||起到的作用是or的作用

解法1

输入的内容为*,1

内置的sql语句为sql=“select”.sql=“select”.post[‘query’]."||flag from Flag";

如果$post[‘query’]的数据为*,1,sql语句就变成了select *,1||flag from Flag,也就是select *,1 from Flag,也就是直接查询出了Flag表中的所有内容

解法2

输入的内容为1;set sql_mode=pipes_as_concat;select 1

其中set sql_mode=pipes_as_concat的作用是将||的作用由or变为拼接字符串

在这里插入图片描述

即可找到flag

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿刁〇하

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值