Mysql 注入之 limit 注入

Mysql 注入之 limit 注入,第1张

参考链接:

https://www.leavesongs.com/PENETRATION/sql-injections-in-mysql-limit-clause.html

一般实际过程中使用 limit 时,大概有两种情况,一种使用 order by ,一种就是不使用 order by 关键字

执行语句

这种情况下的 limit 后面可以使用 union 进行联合查询注入

执行语句

执行语句

此时后面再次使用 union 将会报错

除了 union 就没有其他可以使用的了吗,非也

此方法适用于 5.0.0<MySQL <5.6.6 版本,在limit语句后面的注入

MySQL 5中的SELECT语法:

limit 关键字后面还可跟 PROCEDURE 和 INTO 两个关键字,但是 INTO 后面写入文件需要知道绝对路径以及写入shell的权限,因此利用比较难,因此这里以 PROCEDURE 为例进行注入

报错,尝试一下对其中一个参数进行注入,这里首先尝试报错注入

成功爆出 mysql 版本信息,证明如果存在报错回显的话,可以使用报错注入在 limit 后面进行注入

不存在回显怎么办,延迟注入呀

执行命令

如果 select version() 第一个为5,则多次执行sha(1)达到延迟效果

这里使用 sleep 进行尝试,但均未成功,所以需要使用BENCHMARK进行替代

1、UDF提权专用webshell,导出dll、再执行命令。

2、Phpspy.php的Mysql上传(提示 "上传失败、原因:Result consisted of more than one row"、实际上大多数已上传成功),再连接mysql执行命令。

3、Mysql允许外连的情况下也可以使用Hack MySQL上传,再通过命令行登陆执行命令。

php默认提供了. magic_quotes_gpc 方式转义一些特殊字符.

但这样的防护是有限的.

更多的是需要程序本身的健壮性来保证安全.

要防止注入. 就得程序对输入的内容进行把控了.

可以用函数. 把非法字符过滤掉即可.

例如:

数字类型: 程序期望获取的是数字ID . 就可以 用 intval() 来处理下外部输入的内容 .

字符类型: 期望的是字母数字的组合. 就可以用preg_match 判断输入的是否符合 .

....

用什么就取什么..


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8691186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存