Blackbox SQLi:MySql“SQL语法错误”更大“UNSIGNED BIGINT”

时间:2018-06-09 10:04:33

标签: mysql security sql-injection

我尝试黑网测试一个网站,网址格式为http://example.com/a/[integer_value]/something_else

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

  1. 如果0 <= [integer_value]&lt; =(UNSIGNED BIGTINT,即2 ^ 64-1)=&gt;没有错误

  2. if [integer_value]&gt; UNSIGNED BIGTINT =&gt;错误:例如&#34;您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以便在#18; 18446744073709551616&#39; 18446744073709551616附近使用正确的语法。在第1行&#34;

  3. 有什么想法吗?

    这可以被利用吗?

1 个答案:

答案 0 :(得分:1)

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

  1. 这确实是传入请求可能导致MySQL服务器抛出错误的唯一情况,
  2. 该网站仅执行无副作用的SELECT操作以响应这些URL。
  3. 但是,如果 s那些是。当你进行黑盒测试时,原则上你无法知道它们是否属实。

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

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

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

    你不是偏执狂。高兴的,非常聪明的罪犯正在努力打造你的网站。