手动编写 UDF 文件

MySQL UDF 简介 MySQL UDF (User Defined Function) 是一种可以扩展 MySQL 功能的机制,通过编写 C 或 C++ 代码,可以创建自定义的函数,甚至执行系统命令。 要利用 MySQL UDF 执行系统命令,需要满足以下三个条件: 拥有 MySQL 的 root 权限,可以创建和删除函数 拥有 MySQL 服务的文件权限,可以将 UDF 文件写到 MySQL 插件目录 UDF 文件是针对目标系统的平台和架构编译的,否则会出现错误 编写代码 在上文提到,利用 UDF 执行系统命令需要针对目标系统的平台和架构编译,比如目标 MySQL 服务器为 Windows 系统则需要 UDF 文件后缀为 .dll,Linux 系统则需要 UDF 文件后缀为 .so。 本次选择以 Kali Linux 系统为例,编译代码前首先需要安装开发库,Kali Linux 安装命令为: ┌──(root㉿kali)-[~] └─# apt…

php-memcached CRLF绕过

简介 在正式讲解前,我们先简单了解下CRLF注入漏洞。 在HTTP报文中,状态行和首部中的每行以CRLF结束,首部与主体之间由一空行分隔。而CRLF漏洞的产生则是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符串,攻击者一旦成功注入CRLF,就会在响应中输入,所以也称为HTTP响应拆分漏洞。 在CRLF中,“CR”意为回车(例:r、%0D),“LF”意为换行符(例:n、%0A)。在Windows系统中,CRLF表示行的结束;Linux则以LF表示行的结束。 一般来说更多是将CRLF用于会话固定漏洞、XSS漏洞和窃取cookie等,但是CRLF注入漏洞也可以利用在Web应用程序中。 漏洞环境 Memcached是一个开源、高性能的分布式内存对象缓存系统。 影响版本: V2.2.0及以下版本 在早些时候Memcached也爆发过CRLF注入,而本次绕过则是根据之前爆发过的CRLF注入而产生的1Day漏洞,因为是1Day所以直接下最新版即可。 我们使用Kali Linux环境,编写以下代码文件,并放到网页目录下。 <?php $server = new Memcached(); $server->addServer('localhost', 11211); $token = $_GET['token']; $server->set("wolf","poc") ; echo "[token] = "; var_dump($server->get("$token")); echo "[wolf] = "; var_dump($server->get("wolf")); 在Kali Linux终端输入命令: apt-get install memcached 安装Memcached后,输入以下命令: service memcached start //开启Memcached服务 netstat -ntlp //查看服务是否开启 看到11211端口为监听状态则代表Memcached服务正常开启,然后只需要配置php环境重启Apache2即可。 基础命令 在搭建好漏洞环境后,我们先简单了解下Memcached的命令,会更加方便后续的漏洞利用。 set命令 Memcached的set命令用于将value存储在指定的key中,如果key已存在则会更新key值。 基本语法如下: set key…