【漏洞挖掘】——110、Bigint报错注入深入刨析

Bigint报错注入
Bigint报错注入原理

数据类型BIGINT的长度为8字节,也就是说长度为64比特,这种数据类型最大的有符号值,用二进制、十六进制和十进制的表示形式分别为"0b0111111111111111111111111111111111111111111111111111111111111111"、"0x7fffffffffffffff"和"9223372036854775807",当对这个值进行某些数值运算的时候,比如加法运算,就会引起"BIGINT value is out of range"错误,例如:\

为了避免出现上面这样的错误,我们只需将其转换为无符号整数即可,对于无符号整数来说BIGINT可以存放的最大值用二进制、十六进制和十进制表示的话,分别为"0b1111111111111111111111111111111111111111111111111111111111111111"、"0xFFFFFFFFFFFFFFFF"和"18446744073709551615",同样的如果对这个值进行数值表达式运算,例如:加法或减法运算,同样也会导致"BIGINT value is out of range"错误

# In decimal
mysql> select 18446744073709551615+1;
ERROR 1690 (22003): BIGINT UNSIGN

### 关于 MySQL 中 `BIGINT` 类型的错误解决方案 在处理 MySQL 数据库中的 `BIGINT` 字段时,可能会遇到一些常见的错误。这些错误通常与数据类型的范围、存储方式以及驱动程序兼容性有关。以下是针对此类问题的具体分和解决方案。 #### 1. **超出 BIGINT 范围** 如果尝试插入的数据超出了 `BIGINT` 的取值范围(有符号 `-9223372036854775808` 到 `9223372036854775807` 或无符号 `0` 到 `18446744073709551615`),则会引发错误[^1]。 解决方案: - 确认插入的数据是否符合目标字段的定义范围。 - 若确实需要更大的数值,则可以考虑使用其他数据库支持的大数类型(如字符串或其他扩展类型)来替代。 #### 2. **SQL 语法错误** 当 SQL 查询语句存在拼写错误或不匹配当前版本的 MySQL 语法时,也可能触发类似的错误提示。例如,在某些情况下,表创建语句可能因关键字冲突而失败[^2]。 解决方法: - 使用最新版客户端工具连接到服务器端,并确保双方均采用一致的标准协议。 - 验证所使用的 DDL (Data Definition Language) 是否遵循官方文档说明的最佳实践。 #### 3. **MyBatis Generator 和 MySQL 连接器版本差异引起的潜在隐患** 对于基于 MyBatis 框架的应用开发项目来说,如果选用不当或者未正确配置 Maven 构建环境里的插件依赖关系的话,同样会造成运行期间抛出异常情况发生[^3]。 处理建议如下所示: ```xml <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <!-- 自定义 generatorConfig 文件位置 --> <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> </dependencies> </plugin> ``` 通过上述 XML 片段调整 pom 设置之后重新执行 mvn clean install 命令即可完成修复工作流程操作过程描述完毕结束标志符。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FLy_鹏程万里

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

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

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

打赏作者

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

抵扣说明:

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

余额充值