首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mariadb EXECUTE IMMEDIATE 解析

0x01 前言 该篇文章起源于XCTF 决赛中清华对一道web题的非预期,在该题中过滤了很多的关键字,包括SELECT等,预期解为mariadb主从复制,但清华使用EXECUTE IMMEDIATE绕过了黑名单导致非预期...例如,下面的代码展示了如何使用 EXECUTE IMMEDIATE 执行一个简单的 SELECT 查询: SET @id = 123; SET @stmt = CONCAT('SELECT * FROM...mytable WHERE id = ', @id); EXECUTE IMMEDIATE @stmt; 在这个例子中,我们将 @id 变量的值拼接到 SQL 查询字符串中,然后使用 EXECUTE...可以进行绕过 原题中使用的环境为mariadb 10.3.38 EXECUTE IMMEDIATE 'SELECT * FROM ctf.admin'; 可以直接执行字符串中的sql语句,在基于这一点的情况下就很容易进行绕过...该题中并没有过滤各种字符串编码,所以我们可以使用如下方法进行绕过 EXECUTE IMMEDIATE UNHEX('53454c454354202a2046524f4d206374662e61646d696e

43940
您找到你想要的搜索结果了吗?
是的
没有找到

到底为什么建议使用SELECT * ?

“不要使用SELECT *”几乎已经成为了使用MySQL的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用*作为查询的字段列表,更是让这条规则拥有了权威的加持。...但是我们总得知道为什么建议直接使用SELECT *,本文从4个方面给出理由。 1....那使用SELECT *会不会使MySQL占用更多的内存呢?...主键索引 如果我们执行这个语句 SELECT * FROM user_innodb WHERE name = '蝉沐风'; 使用EXPLAIN查看一下语句的执行计划: 发现这个SQL语句会使用到IDX_NAME_PHONE...既然使用了索引,为了避免重蹈无法使用覆盖索引的覆辙,我们也应该尽量不要直接SELECT *,而是将真正用到的字段作为查询列,并为其建立适当的索引。

80420

为什么建议你使用SELECT *

作者: 蝉沐风作者网站:www.chanmufeng.com“不要使用SELECT *”几乎已经成为了MySQL使用的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用*作为查询的字段列表,更是让这条规则拥有了权威的加持...但是我们总得知道为什么建议直接使用SELECT *,本文从4个方面给出理由。1....那使用SELECT *会不会使MySQL占用更多的内存呢?...图片如果我们执行这个语句SELECT * FROM user_innodb WHERE name = '蝉沐风';使用EXPLAIN查看一下语句的执行计划:图片发现这个SQL语句会使用到IDX_NAME_PHONE...既然使用了索引,为了避免重蹈无法使用覆盖索引的覆辙,我们也应该尽量不要直接SELECT *,而是将真正用到的字段作为查询列,并为其建立适当的索引。

2.4K164

Oracle执行shutdown immediate后登陆上解决方法

在sqlplus 里登录后使用shutdown immediate 关闭数据库后若没有使用startup重启数据库就退出窗口则会出现下一次重启sqlplus窗口时无法登录的现象,解决方法如下 启动数据库的方法...启动数据库实例的方法有很多种,分别介绍如下: 1、使用SQLPLUS 使用SQLPLUS连接到具有管理员权限的Oracle上如使用,然后发布startup命令,从而启动数据库。...2、使用Recovery Manager 即使用RMAN来执行startup和shutdown命令来启动和关闭数据库实例。若是在RMAN环境中最好使用这种方法,而不是调用SQL*PLUS方法。...3、使用Oracle Enterprise Manager 可以使用Oracle Enterprise Manager来管理oracle数据库,当然也包含启动和关闭数据库。...一般不要迫使数据库启动,除非在以下的情况下:使用shutdown normal、shutdown immediate、shutdown transactional命令不能关闭当前的实例。

77020

为什么我建议你用 Select * ?

程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。 技巧1 比较运算符能用 “=”就不用“” “=”增加了索引的使用几率。...技巧2 明知只有一条查询结果,那请使用 “LIMIT 1” “LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。...技巧7 尽量避免使用SELECT *” 如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO...技巧11 使用 LIMIT 实现分页逻辑 不仅提高了性能,同时减少了不必要的数据库和应用间的网络传输。...技巧12 使用 EXPLAIN 关键字去查看执行计划 EXPLAIN 可以检查索引使用情况以及扫描的行。 其他 SQL调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。

1.6K20

select简单使用

注意:mysql区分大小写,我这里是在命令行敲打的,大多数直接就干脆写成一行了,为了方便观察单词,采用小写。具体使用包包按照要求就行。...基本查询 1、全列查询 语法:select * from 表名 2、指定列查询 语法:select 字段1,字段2,字段3... from 表名  (各个字段之间以逗号分隔,注意这里的逗号是英文那个,不是中文...) 3、查询结果重命名 语法:select 字段1 新名,字段2 新名,字段3 新名... from 表名  (旧的字段与新名之间用空格隔开) 4、去重查询 语法:select distinct 字段1...运算符 运算符 说明 >, >=, <, <= 大于,大于等于,小于,小于等于 = 等于,NULL参与计算 等于,NULL参与计算 !...这里sql语句默认如果指明的话,是默认asc的。

10810

什么是Oracle的高版本游标(High Version Count)?如何排查?(持续更新)

OPTIMIZER_MISMATCH 优化器环境与现有的子游标匹配 (修改优化器模式之后,现有的子游标不能被重新使用)。...set use_stored_oulines= OUTLINES2; select count(*) from emp; 第二次执行"select from emp" 将创建另一个子游标,因为使用的...PQ_SLAVE_MISMATCH PQ工作进程匹配。如果遇到这种原因编号,并且正在使用并行执行(PX),那么请检查是否真的想使用它。这种匹配可能是由于运行大量不需要并行执行的小SQL语句造成的。...FLASHBACK_TABLE_MISMATCH 闪回表匹配。 LITREP_COMP_MISMATCH Literal 替换的使用不匹配。 11g 新追加 : PLSQL_DEBUG调试匹配。...当使用ACS自适应游标共享并且游标是绑定感知的,那么如果选择性超出了当前的范围,并且新的计划是可取的,那么就会产生一个新的子游标,其原因代码是共享以前的计划。

27910
领券