前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mariadb EXECUTE IMMEDIATE 解析

Mariadb EXECUTE IMMEDIATE 解析

作者头像
yulate
发布2023-05-02 10:57:28
4080
发布2023-05-02 10:57:28
举报

0x01 前言

该篇文章起源于XCTF 决赛中清华对一道web题的非预期,在该题中过滤了很多的关键字,包括SELECT等,预期解为mariadb主从复制,但清华使用EXECUTE IMMEDIATE绕过了黑名单导致非预期,这里详细来分析一下该种绕过方法。

0x01 基础用法

EXECUTE IMMEDIATE Statement (oracle.com)

在 MariaDB 10.0.3 之后,新增了一个名为 EXECUTE IMMEDIATE 的 SQL 语句,它可以将字符串作为动态 SQL 查询语句执行。这个语句的语法如下:

代码语言:javascript
复制
EXECUTE IMMEDIATE stmt_string [INTO var_name [, ...]]

其中,stmt_string 是要执行的 SQL 查询字符串,可以包含占位符。var_name 是可选的参数列表,用于从查询结果中接收值。

例如,下面的代码展示了如何使用 EXECUTE IMMEDIATE 执行一个简单的 SELECT 查询:

代码语言:javascript
复制
SET @id = 123;
SET @stmt = CONCAT('SELECT * FROM mytable WHERE id = ', @id);
EXECUTE IMMEDIATE @stmt;

在这个例子中,我们将 @id 变量的值拼接到 SQL 查询字符串中,然后使用 EXECUTE IMMEDIATE 关键字执行该查询,并输出结果。

0x02 绕过分析

具体解题思路参考 ((20230329135113-j13bte1 'The 7th XCTF Finals WEB WP')) 这篇文章,该题中手工测试出的黑名单如下:

代码语言:javascript
复制
black list
select
set
GRANTS
create
insert
load
PREPARE
rename
update
HANDLER
updatexml

其中过滤了常用的几大关键字,通过EXECUTE IMMEDIATE可以进行绕过

原题中使用的环境为mariadb 10.3.38

代码语言:javascript
复制
EXECUTE IMMEDIATE 'SELECT * FROM ctf.admin';

可以直接执行字符串中的sql语句,在基于这一点的情况下就很容易进行绕过

该题中并没有过滤各种字符串编码,所以我们可以使用如下方法进行绕过

代码语言:javascript
复制
EXECUTE IMMEDIATE UNHEX('53454c454354202a2046524f4d206374662e61646d696e');

SELECT * FROM ctf.admin转为hex再使用UNHEX方法转换为字符串进行执行

同理,这里也可以使用BASE64之类的进行绕过

0x03 总结

又跟着清华哥学到一个trick。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1ivtybyukjjvb

浏览量: 18

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-4-01 2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 前言
  • 0x01 基础用法
  • 0x02 绕过分析
  • 0x03 总结
相关产品与服务
云数据库 MariaDB
腾讯云数据库 MariaDB(TencentDB for MariaDB) 让您轻松在云端部署、使用 MariaDB 数据库。MariaDB 是在 MySQL 版权被 Oracle 收购后,由 MySQL 创始人 Monty 创立,其版权授予了“MariaDB基金会(非营利性组织)”以保证 MariaDB 永远开源,良好的开源策略,是企业级应用的最优选择,主流开源社区系统/软件的数据库系统,均已默认配置 MariaDB。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档