UDF是Mysql提供给用户实现自己功能的一个接口,为了使UDF机制起作用,函数必须用C或C ++编写,并且操作系统必须支持动态加载。这篇文章主要介绍UDF开发和利用的方法。
操作系统:Windows 10
测试环境:PHPStudy+Mysql 5.5(x64)
编译器:VS2015
从MySQL官网下载对应版本的源码包,把MySQL对应版本的源码下载回来。将include文件夹和lib文件夹解压至C++项目路径。
194K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3#2A6M7Y4u0G2M7W2)9J5k6i4W2S2L8X3c8W2P5q4)9J5k6i4u0#2i4K6u0r3L8h3W2J5M7X3!0J5M7#2)9J5c8X3k6@1M7q4)9J5k6h3#2&6M7%4q4D9i4K6u0W2j5$3!0E0i4K6u0r3c8r3!0%4L8X3I4G2j5h3c8K6i4K6u0r3e0i4W2e0f1f1I4Q4x3X3b7#2i4K6u0W2y4g2)9J5c8X3#2&6M7%4q4D9i4K6u0V1y4g2)9J5k6e0g2Q4x3X3f1#2z5g2)9J5k6s2N6A6L8Y4R3$3y4q4)9J5k6i4A6A6M7l9`.`.
VS2015配置-项目属性
将MySQL的include、lib文件夹放到C++项目路径后。属性配置如下:
UDF在程序代码中加入调试OutputDebugStringA();就可以输出调试的信息了。在每个分支都输出相对应的调试信息,就可以获取当前运行的状态。
CPP源码如下:
回显shell编写尝试,跟没有回显的shell执行命令是一样的原理。 核心原理是创建一个管道,把命令结果输入管道读取出来后关闭管道。
使用方式:
CPP源码如下:
核心代码主要是以下几个注册表操作相关的API实现的
使用方式:
CPP源码如下:
CPP源码如下:
UDF有两种加载方式,一种是修改修改MySQL配置文件。第二种则是将UDF放置在MySQL指定的插件目录中加载。
另一种方法是用插件目录编写一个新的MySQL配置文件并将其传递给mysqld。
启动参数配置
my.ini配置
load_file函数
工具:hydra
CPP
用链表实现的MYSQL、MSSQL和oracle密码暴破C程序
97cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3f1#2x3h3y4@1L8#2)9J5k6h3y4G2L8g2)9J5c8X3k6G2P5r3S2S2j5$3E0Q4x3V1j5K6y4e0j5H3y4l9`.`.
641K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6U0K9r3W2F1j5i4y4#2L8U0l9J5x3g2)9J5c8Y4m8%4k6q4)9#2k6X3y4J5j5h3y4C8i4K6u0r3j5X3I4G2j5W2)9J5c8X3#2S2M7%4c8W2M7W2)9J5c8X3#2&6M7%4q4D9i4K6u0r3L8i4W2K6M7h3I4Q4y4h3k6U0M7X3q4U0K9#2)9J5k6i4m8&6
9d1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2%4j5h3W2@1j5h3I4G2L8X3g2Q4x3X3g2U0L8W2)9J5c8Y4m8&6N6r3S2G2L8W2)9J5k6r3#2&6M7%4q4D9i4K6u0V1L8i4g2D9N6q4)9J5k6h3S2@1L8h3H3`.
5d0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6F1k6i4c8^5k6X3I4&6i4K6u0r3P5q4)9J5k6r3y4J5j5h3y4C8
导出Mof
php探针、PHPMyadmin
Mysql函数扩展之UDF开发
a13K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8X3q4D9j5X3g2J5N6s2y4Z5i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5%4z5o6f1$3y4K6j5$3x3b7`.`.
VS2015配置C/C++-MySQL开发环境
029K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8X3c8S2M7$3!0Q4y4h3k6U0M7$3c8F1i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5#2y4o6j5@1y4U0R3#2z5b7`.`.
MySQL UDF(自定义函数)
81eK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0L8X3u0D9L8$3N6K6i4K6u0W2j5$3!0E0i4K6u0r3M7X3q4C8k6i4u0Q4x3V1k6H3i4K6u0r3y4o6x3%4y4K6x3@1x3#2)9J5k6h3S2@1L8h3H3`.
MySQL UDF的调试方式 - debugviewf54K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4y4%4L8%4c8U0L8$3c8W2M7W2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3x3e0R3#2x3U0M7`.
详详详解MySQL UDF执行命令
e06K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6e0x3$3x3r3c8G2j5#2)9J5k6h3y4F1i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8U0x3I4y4K6R3@1y4U0f1^5i4K6g2X3y4K6x3K6x3U0R3%4y4K6x3J5i4K6u0W2K9s2c8E0L8l9`.`.
利用MySQL UDF进行的一次渗透测试3d2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0i4K6u0W2M7$3!0Z5N6g2)9J5k6h3y4G2L8g2)9J5c8X3q4Q4x3V1j5J5x3U0b7&6y4e0l9I4x3K6W2Q4y4h3j5K6y4e0b7^5z5e0W2Q4x3V1k6Q4x3@1k6H3N6X3W2V1i4K6y4p5x3o6l9H3x3e0p5#2i4K6g2X3x3%4N6Q4y4h3k6S2
24.4.2.2 UDF Calling Sequences for Aggregate Functions
9b1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6Q4x3X3g2E0P5i4y4I4L8q4)9J5k6h3y4G2L8g2)9J5c8X3c8G2j5#2)9J5c8Y4u0W2k6X3#2S2L8W2)9J5c8U0g2Q4x3X3f1#2i4K6u0r3k6h3&6Q4x3V1k6#2k6r3k6Q4x3X3c8S2k6$3N6J5i4K6u0V1j5$3q4D9L8r3W2F1k6#2)9J5k6h3S2@1L8h3H3`.
windows下编写mysql UDF函数的失败经历,与ubuntu下的成功编译经历
5a9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4N6S2N6r3y4Z5i4K6g2X3j5$3S2Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3k6r3g2@1j5h3W2D9M7#2)9J5c8U0f1@1x3o6p5#2z5e0b7^5
开源项目
135K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6E0P5i4y4I4L8s2g2V1k6W2)9J5c8X3I4A6j5W2)9#2k6X3#2&6M7%4q4D9N6h3c8X3i4K6g2X3M7%4W2K6
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-5-31 11:24
被lipss编辑
,原因: