这篇文章主要为大家展示了“如何使用exp进行SQL报错注入”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用exp进行SQL报错注入”这篇文章吧。0x01 前言概述小编又在MySQL中发现了一个Double型数据溢出。当我们拿到MySQL里的函数时,小编比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以小编就跑去测试看哪些函数会出现溢出错误。然后小编发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。mysql> select exp(709);
+———————–+
| exp(709) |
+———————–+
| 8.218407461554972e307 |
+———————–+
1 row in set (0.00 sec)mysql> select exp(710);
ERROR 1690 (22003): DOUBLE value is out of range in ‘exp(710)’在MySQL中,exp与ln和log的功能相反,简单介绍下,就是log和ln都返回以e为底数的对数,见等式:mysql> select log(15);
+——————+
| log(15) |
+——————+
| 2.70805020110221 |
+——————+
1 row in set (0.00 sec)
mysql> select ln(15);
+——————+
| ln(15) |
+——————+
| 2.70805020110221 |
+——————+
1 row in set (0.00 sec)指数函数为对数函数的反函数,exp()即为以e为底的对数函数,如等式:0x02 注入当涉及到注入时,我们使用否定查询来造成“DOUBLE value is out of range”的错误。作者之前的博文提到的,将0按位取反就会返回“18446744073709551615”,再加上函数成功执行后返回0的缘故,我们将成功执行的函数取反就会得到***的无免费云主机域名符号BIGINT值。mysql> select ~0;
+———————-+
| ~0 |
+———————-+
| 18446744073709551615 |
+———————-+
1 row in set (0.00 sec)
mysql> select ~(select version());
+———————-+
| ~(select version()) |
+———————-+
| 18446744073709551610 |
+———————-+
1 row in set, 1 warning (0.00 sec)我们通过子查询与按位求反,造成一个DOUBLE overflow error,并借由此注出数据。0x03 注出数据得到表名:得到列名:检索数据:0x04 一蹴而就这个查询可以从当前的上下文中dump出所有的tables与columns。我们也可以dump出所有的数据库,但由于我们是通过一个错误进行提取,它会返回很少的结果。0x05 读取文件你可以通过load_file()函数来读取文件,但作者发现有13行的限制,该语句也可以在BIGINT overflow injections中使用。注意,你无法写文件,因为这个错入写入的只是0。0x06 Injection in Insert按部就班就好对于所有的insert,update和delete语句DIOS查询也同样可以使用。0x07 Injection in Update0x08 Injection in Delete和前面的BIGINT注入一样,exp注入也适用于MySQL5.5.5及以上版本。以前的版本对于此情况则是“一言不发”。可能还有其他的函数会产生这种报错呦。以上是“如何使用exp进行SQL报错注入”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注云编程开发博客行业资讯频道!
相关推荐: 安装Mod_Security On Apache2.4(Ubuntu 14.04)
1.Installing Apache,PHP按 ctrl+alt+T to 打开 terminal输入下面命令sudo apt-get updatesudo apt-get install apache2sudo apt-get install php5su…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。