mysql - 黑盒 SQLi : MySql “error in your SQL syntax” when larger “UNSIGNED BIGINT”

标签 mysql security sql-injection

我正在尝试对一个网站进行黑盒测试,URL 的形式为 http://example.com/a/[integer_value]/something_else

尝试将 [integer_value] 更改为引号(双引号和单引号)时,字符。它没有任何影响。但是,当 [integer_value] 大于 UNSIGNED BIGTINT 时,将抛出 SQL 错误。也就是说:

  1. if 0 <= [integer_value] <= ( UNSIGNED BIGTINT, is 2^64-1) => 没有错误

  2. if [integer_value] > UNSIGNED BIGTINT => 错误:例如“您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的‘18446744073709551616’附近使用的正确语法”

有什么想法吗?

这是可利用的吗?

最佳答案

这可能无法直接利用,如果

  1. 这确实是传入请求会导致您的 MySQL 服务器抛出错误的唯一情况,
  2. 该网站仅执行无副作用的 SELECT 操作来响应这些 URL。

但是,那些都是很大的如果。当您进行黑盒测试时,原则上您无法知道它们是否正确。

此外,当您的系统抛出错误时,它会显示有关网站工作方式的信息。这在脏线(也称为公共(public)互联网)上是不明智的。

在将这些值传递给 MySQL 服务器之前,最好对这些值进行一些完整性检查。例如,您可以尝试将传入的字符串转换为 64 位数字。如果转换失败,您可以就此停止。或者,您可以检查号码中的位数并拒绝长度超过您的应用程序要求的号码。

您的网站应该使用简单的 404 not found 来响应此类 URL,就像它响应它无法处理的任何其他请求的 URL 一样。

你不是偏执狂。积极进取且非常聪明的犯罪分子正在努力破解您的网站。

关于mysql - 黑盒 SQLi : MySql “error in your SQL syntax” when larger “UNSIGNED BIGINT” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50773087/

相关文章:

mysql - 强制 ansible_hostname 值或检查 ansible 目标是否为 localhost

security - 是否可以通过改变语言编码来引入XSS?

sql - 用于解码 SQL 注入(inject)尝试、定位漏洞的工具

mysql - 我一定要使用 SUM() 进行条件聚合吗?

mysql - 如何使用 mysql 查询查找专辑,每个轨道都有 2 个 Assets

javascript - 使用 JavaScript 进行输入清理不是毫无意义吗?

mysql - 扫描网站数据库以查找黑客攻击迹象的方法

php - 旧的困惑 PHP 代码和 MySQL 注入(inject)

Ubuntu 无法停止 mysqld

java - Spring Security - Thymeleaf - 我可以在秒内评估 SPEL 表达式 :authorize tags?