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

一次INSERT查询的无逗号SQL注入漏洞构造利用($10k)

本文分享的是作者一次众测中的SQL报错型注入漏洞发现过程,有趣之处在于,在后续漏洞利用的构造中,如果在目标服务端数据库逻辑的INSERT查询中使用逗号(Comma),将导致构造的Payload不可用,...[dummydb]> Time-based的盲注构造 以上的构造Payload只能说明数据库内部的一个处理逻辑,但在应用端来看不能导致报错,而且也无法回显我们的插入语句结果,甚至是根本没法知道我们的插入语句是否是...这里的话,选用case when比较适合,所以这里利用它的一个基本用法为: MariaDB [dummydb]> select CASE WHEN ((select substring('111',1,1...另外,我们还要找到代替substring的方法,那么,我们可以用Like操作来实现,比如以下逻辑: MariaDB [dummydb]> select CASE WHEN ((select database..."abc")'[*] Obtaining lengthExecuting jnkfooo'-cast((select CASE WHEN ((select length((select "abc"))

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

MySQL 存储过程与函数(精简笔记)

MySQL 是最流行的关系型数据库管理系统之一, WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)...------+ 1 row in set (0.00 sec) 创建存储函数 存储函数的使用方法与MySQL内部函数的使用方法是一样的,MySQL中,用户自己定义的存储函数与MySQL内部函数是一个性质的...创建存储函数: 创建名称为NameZip,该函数返回select语句查询结果,数值类型为字符串,SQL语句如下: MariaDB [lyshark]> delimiter // MariaDB [lyshark...,MySQL中用来构造控制流程的语句有:IF,CASE,LOOP,LEAVE,ITERATE,REPEAT,WHILE等,每个流程中可能包含一个单独的语句,或者是使用BEGIN...END构造的复合语句...lyshark; drop function countproc; 常用内置函数 函数表示对输入参数值返回一个具有特定关系的值,MySQL提供了大量丰富的函数,进行数据库管理以及数据的查询和操作时将会经常用到各种函数

1.9K10

MariaDB非分布式数据库经典案例

常见问题 CASE 1:Update语法 问题现象:tdsql-xxxxxx 库plidb表letterperson字段PrintState被大量置为了‘0’ 问题原因:开发/操作人员update语法错误导致...问题原因: 大事务SQL产生了大量binlog,导致binlog组提交的时候需要长时间写入binlog,阻塞了agent心跳语句的binlog写入,agent心跳写入超时,触发主备切换。...CASE 8:SELECT… FROM DUAL 语句导致主从切换 问题现象:云上TDSQL实例发生主从切换、CPU利用率掉底、连接出现中断 问题原因: SQL中跑了 SELECT …… FROM DUAL...有时候会出现帐号还没创建出来,但是前端界面已经进入设置权限的交互,这时候就会报如上图账户不存在的错误; 规避方法: 等5分钟左右后控制台看到帐号后再赋予权限。...replaced by InnoDB in MariaDB and MySQL 5.5.

2.4K70

MySQL 权限与备份管理(精简笔记)

MySQL 是最流行的关系型数据库管理系统之一, WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统)...权限列: 权限列的字段决定了用户的权限,描述了全局范围允许对数据和数据库进行的操作.包括查询权限、修改权限等普通权限,还包括了关闭服务器、超级权限和加载用户等高级权限,普通权限用于操作数据库,高级权限用于数据库管理...: 使用grant语句创建一个新用户myuser,密码是123123,并授予用户对所有表的select和update权限,SQL语句如下: MariaDB [(none)]> grant select,...[root@localhost ~]# mysql -uroot -p123 MariaDB 权限管理 权限管理主要是对登录到MariaDB的用户进行权限验证所有用户的权限都存储MariaDB的权限表中...可以使用备份的数据进行恢复,这样就尽可能地降低了意外原因导致的损失.

1.2K20

SQL注入实例学习待整理

[TOC] 宽字节注入原理: 产生原因:由于nbb部署MySQL时候错误/etc/my.cnf配置,如下这样会导致编码转换从而导致注入的漏洞 character-set-cient=gbk #或者执行...内部变化)而%5c代表的反斜杠\是转义函数添加; 3.实际是因为在数据库查询前由于使用GBK多字节编码,即在汉字编码的范围两个字节会被编码成为一个汉字,然后MySQL服务器会对查询的语句进行GBK编码即...title=1 SQL语句:Select * From test Where title='1' 请求1:http://127.0.0.1/test.php?...id=1�\' union select 1,user(),concat(user,0x7e,context) from content#; 执行的SQL语句:SELECT * FROM user WHERE...php /*** * 描述:MySQL宽字节注入案例 * MariaDB [cms]> create table user( `id` INT(4) NOT NULL DEFAULT '1',

37710

MariaDB 存储过程与函数详解

MySQL内部函数的使用方法是一样的,MySQL中,用户自己定义的存储函数与MySQL内部函数是一个性质的.区别在于,存储函数是用户自己定义的,而内部函数则是开发者编写的.创建存储函数: 创建储存函数...,MySQL中用来构造控制流程的语句有:IF,CASE,LOOP,LEAVE,ITERATE,REPEAT,WHILE等,每个流程中可能包含一个单独的语句,或者是使用BEGIN...END构造的复合语句...select "这个数值是1呀"; ELSE select "这个数值是其他呀"; END CASE ; END ;MariaDB [lyshark]>...查询存储过程:MariaDB [lyshark]> select name,created from mysql.proc where db="lyshark" and type="PROCEDURE...查询存储函数:MariaDB [lyshark]> select name,created from mysql.proc where db="lyshark" and type="FUNCTION"

1.5K20

Go 语言使用原生 SQL 兼容多种数据库

因此,在编写 SQL 语句时,需要注意目标数据库系统的标识符长度限制,以确保标识符的命名不会超出限制,避免出现命名截断或错误。 2....否则,敏感大小写的数据库系统中可能会出现无法找到对象或语法错误的问题。...* FROM TB_EXAMPLE; 明确指定标识符,还可以防止标识符被识别为数据库关键字或保留字,避免因使用关键字作为标识符导致的语法错误。...id" = '1'; 但在 Oracle 数据库中执行以上 SQL 语句时,将会报 ORA-00933: SQL 命令未正确结束 错误, 是因为 Oracle 数据库指定表别名时不能使用 AS 关键字...CAST() CAST(): 进行数据类型转换时使用 CAST() 函数,而不是某些数据库中特有的 CONVERT 函数: SELECT CAST(1 AS CHAR); -- Oracle SELECT

8210

一条 SQL 查询语句是如何执行的?

比如,你有个最简单的表,表里只有一个ID字段,执行下面这个查询语句mysql> select from T where ID=10; 我们只看到一个输入语句,返回一个结果,却不知道这个 SQL 语句...但是全部使用长连接后,可能会发现,有些时候 MySQL 占用内存涨的十分的快,因为 MySQL 执行过程中使用的是内存管理连接对象,这些资源会在连接断开之后才释放,所以长连接累计下来,可能导致内存占用太大...如果你的语句不对,就会收到“ You have an eror in your SQL syntax'的错误提醒,比如下面这个语句 select少打了开头的字母“s”....,还要进行优化器的处理,优化器表里面有多个索引的时候,决定使用哪个索引;或者一个语句多表关联的时候,决定各个表的连接顺序,比如下面语句是执行两个表的的 join: mysql> select * from...sleep(11); 参数说明 Query_time: duration 语句执行时间(以秒为单位) Lock_time: duration 几秒钟获得锁定的时间 Rows_sent: N 发送到客户端的行数

76310

MariaDB 备份与日志管理

数据备份是理员非常重要的工作之一,系统意外崩溃或者硬件的损坏都可能导致数据库的丢失,因此MariaDB管理员应该定期地备份数据库,使得在意外情况发生时,尽可能减少损失....◆数据导入导出◆select 语句导出:MariaDB [none]> select * from 数据库名称.表名称 INTO OUTFILE "/root/xxx.txt"[root@localhost...MariaDB默认分为以下4类,使用这些日志可查看MariaDB内部发生的事情,4类分别是: ● 错误日志: 记录MaraiDB服务的启动,运行或停止MariaDB服务时出现的问题 ● 查询日志: 记录建立的客户端连接和执行的语句...,可以强制关闭和重新打开日志文件(或者某些情况下切换到一个新的日志),当执行一个FLUSH LOGS语句或执行mysqlladmin flush-logs或mysqladmin refresh时,将刷新日志...(0.01 sec)◆慢查询日志◆慢查询日志是记录查询时长超过指定时间的日志,慢查询日志主要用来记录执行时间较长的查询语句,通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化.开启错误日志

62410

Mysql优化秘籍心法

MariaDB10/Mysql5.6版本里,采用join关联方式对其进行了优化,这条SQL语句会自动转换为:SELECT t1.* FROM t1 JOIN t2 on t1.id = t2.id 但请注意的是...另外,Innodb会为每个数据表分配一个存储磁盘的 表名.ibd 文件,若关联的表过多,将会导致查询的时候磁盘的磁头移动次数过多,从而影响性能 所以实践中,尽可能减少Join语句中的NestedLoop...where length(name)=6此语句对字段使用到了函数,会导致索引失效 从Mysql8.0开始,索引特性增加了函数索引,即可以针对函数计算后的值建立一个索引,也就是说该索引的值是函数计算后的值...,会将字段转换为数字进行比较,所以上面那条语句就相当于:select * from user where CAST(phone as signed int) = 13030303030; CAST函数是作用在了...所以索引失效 Mysql遇到字符串和数字比较的时候,会自动把字符串转为数字,然后进行比较 以上这条语句相当于:```select *from user where id = CAST('1' as

95520

老司机总结的12条 SQL 优化方案(非常实用)

MariaDB10/Mysql5.6版本里,采用join关联方式对其进行了优化,这条SQL语句会自动转换为:SELECT t1.* FROM t1 JOIN t2 on t1.id = t2.id 但请注意的是...所以IN适合于外表大而表小的情况;EXISTS适合于外表小而表大的情况。 另外,in查询某些情况下有可能会查询返回错误的结果,因此,通常是建议确定且有限的集合时,可以使用in。...* from t_user where length(name)=6; 此语句对字段使用到了函数,会导致索引失效 从 MySQL 8.0 开始,索引特性增加了函数索引,即可以针对函数计算后的值建立一个索引...* from user where phone = 13030303030; Mysql 执行上述语句时,会把字段转换为数字再进行比较,所以上面那条语句就相当于:select * from user...以上这条语句相当于:select * from user where id = CAST(“1” AS signed int),索引字段并没有用任何函数,CAST 函数是用在了输入参数,因此是可以走索引扫描的

84730

分布式 | DBLE Release Notes 详细解读 2.20.04.0

感谢 Github 用户提供的优质 issue 感谢 QQ 群(669663113)朋友提供的有效反馈 三、主要更新解读 支持 16M 或更大的 MySQL 协议包 故障切换 故障切换 版本 2.20.04.0...协议包 [#1697] 当后端 MySQL 具有不同的 lower_case_table_names 时,Dryrun 将报告错误 [#1691] 为备用从 MySQL 实例添加心跳检查 [#1688...[#1706] NestLoop 可能导致 java.util.ConcurrentModificationException, 感谢 @uliude 报告此错误 [#1705] 当尝试下推 OR...[#1655] ER 表:子表中插入值时,如果检查父表的连接中的值被杀死,则应该返回合理的错误消息 [#1650] 支持 SQL [SELECT * FROM t1 a left join t2 c...data infile 'xxx' into table t (@colA,@colB)] 得到错误的结果集 [#1287] 对于分片表, "select id from test1 union SELECT

64640

SQL语句逻辑执行过程和相关语法详解

但在MariaDBMySQL中,select_list是group by之前进行的。group by中能够引用select_list中的列,select_list中也能指定非分组列。...例如下面的两个查询语句,第一个错误原因是不能引用原表名,第二个错误是因为WHERE阶段不能引用SELECT阶段定义的字段别名。...例如select distinct a,b from t order by c;是错误的。但MySQLmariadb又在这里进行了扩展,它们的排序列允许非select_list中的列。...因此,sql server和oracle会直接对该语句报错。 但是MySQL/mariadb就允许order by中使用非select_list列进行排序。它们是如何"偷奸耍滑"的呢?...例如,下面的语句将会产生错误,因为select_listGROUP BY阶段后执行,且select_list中的列没有包含在GROUP BY中,也没有使用聚合函数。

3.4K20

第16章_变量、流程控制与游标

结合创建存储过程的 SQL 语句代码可以得出:存储过程中未定义条件和处理程序,且当存储过程中执行的 SQL 语句报错时,MySQL 数据库会抛出错误,并退出当前 SQL 逻辑,不再向下继续执行。...ELSE 结果n或语句n(如果是语句,需要加分号) END [case](如果是放在begin end中需要加上case,如果放在select后面不需要) CASE 语句的语法结构 2: #情况二:类似于多重...ELSE 结果n或语句n(如果是语句,需要加分号) END [case](如果是放在begin end中需要加上case,如果放在select后面不需要) 举例 1: 使用 CASE 流程控制语句的第...WHILE 执行语句执行时,先对指定的表达式进行判断,如果为真,就执行循环语句,否则退出循环。...这个语法适用于 MySQL,SQL Server,DB2 和 MariaDB

23910

MySQL 数值类型溢出处理

来,考考大家一个问题, MySQL 中当某一列设置为 int(0) 时会发生什么 ?...MySQL 数值类型溢出处理 当 MySQL 某个数值列上存储超出列数据类型允许范围的值时,结果取决于当时生效的 SQL 模式 如果启用了严格的 SQL 模式,则 MySQL 会根据 SQL 标准拒绝带有错误的超出范围的值...数值表达式求值过程中的溢出会导致错误,例如,因为最大的有符号 BIGINT 值是 9223372036854775807,因此以下表达式会产生错误 mysql> SELECT 9223372036854775807...如果为负,则会引发错误 mysql> SET sql_mode = ''; Query OK, 0 rows affected (0.00 sec) mysql> SELECT CAST(0 AS...mysql> SELECT CAST(0 AS UNSIGNED) - 1; +-------------------------+ | CAST(0 AS UNSIGNED) - 1 | +----

2.1K20
领券