MYSQL 通过exp()报错注入

函数解释

exp()数学函数,用于计算e的x次方的函数。

约束条件

5.5<mysql版本<5.6

报错原理

exp是以e为底的指数函数,
在这里插入图片描述

但是,由于数字太大是会产生溢出。这个函数会在参数大于709时溢出,报错。

将0按位取反就会返回“18446744073709551615”,再加上函数成功执行后返回0的缘故,我们将成功执行的函数取反就会得到最大的无符号BIGINT值。
在这里插入图片描述
我们通过子查询与按位求反,造成一个DOUBLE overflow error,并借由此注出数据。
在这里插入图片描述
从而实现了报错注入。

注入语句

and (exp(~(select * from (操作代码) a)))

举例

在这里插入图片描述
可能有人会疑惑为什么这里有一个字母“a”,前面的例句还用了“x”,其实这里可以使用任何字符串,用于表示派生表命名为a。
如果我们不添加这个字符串会出现报错(Every derived table must have its own alias)表示派生表未被命名
在这里插入图片描述
注意看在and (exp(~(select * from (操作代码) a)))中,“操作代码”是在from之后,也就是“操作代码查询结果”其实是一个表,通过查询新生成的表称为派生表,但是这个表没有被命名就会导致and (exp(~(select * from 操作代码查询结果)))无法查询该表,造成语法错误,所以要在查询结果后面添加一个字符串,表示查询结果新生成的派生表命名为a。

返回主页

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

C1yas0

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

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

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

打赏作者

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

抵扣说明:

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

余额充值