堆叠注入

什么是堆叠注入?

顾名思义,堆叠注入就是将一堆sql语句叠加在一起执行,使用分号结束上一个语句再叠加其他语句一起执行。

题目

首先尝试闭合引号,并注释后面的内容。

发现没有报错,那就判断一下有多少列。



由此可以判断出有两列,接着判断回显位。

发现回显了过滤规则,select是被过滤的,还有一些注入常用语句也被过滤了。

这时就可以尝试一下堆叠注入。

发现这里爆出了所有数据库,再来看看数据表。

发现有两个数据表,通过查看表结构看一下哪个表里面有flag字段。

发现flag字段在1919810931114514表中,接着想办法去读取这个表中的flag字段的值(因为一些常用语句都被过滤了,不能直接查询)。
这里实在不知道怎么办了,于是百度发现大佬的wp用预处理语句绕过了过滤。

预处理语句使用方式:

SET @sql = variable; //设置变量
PREPARE yuchuli from '[my sql sequece]'; //预定义SQL语句
EXECUTE yuchuli; //执行预定义SQL语句sqla

这里是将我们要处理的语句先与定义为yuchuli,再进行执行,绕过关键字的过滤,于是就有了如下的语句。

PREPARE yuchuli from 'select * from `1919810931114514`';
EXECUTE yuchuli;

但是这里的select是被过滤的,于是想到可以对他进行编码绕过.

SET @sql = concat(char(115,101,108,101,99,116), " * from `1919810931114514`");
PREPARE yuchuli from @sql;
EXECUTE yuchuli;


成功拿到了flag。

posted @   顾北清  阅读(1840)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2018-08-28 PHP接口
点击右上角即可分享
微信分享提示