通过sql注入对mysql数据库进行写shell的主要函数是

通过sql注入对mysql数据库进行写shell的主要函数是,第1张

orderby函数。函数是对MySQL中查询结果按照指定字段名进行排序,除了指定字段名还可以指定字段的栏位进行排序,第一个查询字段为1,第二个为2,依次类推,所以可以利用orderby就可以判断列数。

参考链接:

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进行替代

本文介绍 MySQL 8.0 shell 子模块 Util 的两个导入特性 importTable/import_table(JS和python 版本的命名差异)、importJson/import_json的使用方法。

其中 import_table 是通过传统 MySQL 协议来通信,Import_json 是通过 X 插件协议来通信。MySQL 一直以来提供导入文件 SQL 命令 load data infile(单线程)以及对应的可执行文件 mysqlimport(多线程)。

比如我导入 100W 行示例数据到表 ytt.tl1,花了 24 秒。这个已经是 MySQL 默认导入来的最快的。分析那我们现在看下 mysqlimport 工具的升级版,mysqlshell 的 util 工具集。

使用这两个工具之前,必须得临时开启 local_infile 选项。1. import_table建立 3306 端口的新连接我这里切换为 python 模式清空掉示例表 Ytt.tl1import_table 有两个参数,第一个参数定义导入文件的路径,第二个定义相关选项,比如导入的格式,并发的数量等。定义文件路径(参数1)定义选项(参数2)执行导入:只花了不到 17 秒,比传统 mysqlimport 快了不少。

我们上面指定了显式指定了字段分隔符,那有没有已经定义好的组合格式呢? 答案是有的,选项 dialect 可以指定以下格式:csv,tsv,json,csv-unix那么上面的导入,我们可以更简单,改下变量 y_options1 的定义导入时间差不多。这里要说明下,dialect 选项的优先级比较低,比如添加了'linesTerminatedBy':'\r\n', 则覆盖他自己的'\n'。

选项 diaelect 还有一个可选值为 json,可以直接把 json 结果导入到文档表里。比如我新建一张表 tl1_json重新定义文件以及导入选项。导入 JSON 数据速度也还可以,不到 24 秒。那导入 json 数据,就必须得提到以 X 插件协议通信的工具 import_json了。2. imort_json我们切换到 mysqlx 端口import_json 参数和 Import_table 参数类似,这里我改下选项我在手册上没有看到多线程的选项,所以单线程跑 35 秒慢了些。查看刚刚导入的数据import_json 不仅仅可以导入 Json 数据,更重要的是可以在 BSON 和 JSON 之间平滑的转换,有兴趣的同学可以去 TRY 下。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存