摘要
cnrstar (Be My Personal Best!) | 2014-05-20 21:58 众所周知,Mysql的用户在没有File权限情况下是无法通过Load_file读文件或者通过into dumpfile 或者into outfile去写文件,但是偶尔在一个网站上发现个小技巧,也就是通过load data infile可以读取本地文件到数据库,这样子我们就可以在低权限下通过这个bug去读取服务器上的文件。代码如下:
cnrstar (Be My Personal Best!) | 2014-05-20 21:58
众所周知,Mysql的用户在没有File权限情况下是无法通过Load_file读文件或者通过into dumpfile 或者into outfile去写文件,但是偶尔在一个网站上发现个小技巧,也就是通过load data infile可以读取本地文件到数据库,这样子我们就可以在低权限下通过这个bug去读取服务器上的文件。代码如下:
LOAD DATA LOCAL INFILE'C:/boot.ini'INTO TABLE test FIELDS TERMINATED BY'';
后来我就一直想怎么利用这个问题。一个可行的思路如下:
我们去读取
于是本地测试,注意,我当前连接的用户test是没有File权限的:
LOAD DATA LOCAL INFILE'C:/wamp/bin/mysql/INTO TABLE test2 fields terminatedby'';
然后
select*fromtest2;
发现啥都木有,只有一个烂字符,我们用winhex打开一下user.myd文件
OK,找到问题了,被00字符给截断了,导致后面的东西都没进数据库。下面就想办法
经过几次尝试发现,在后面加上LINES TERMINATED BY '/0' 即可,这样子就把截断符号作为分隔符处理了,完整的语句:
LOAD DATA LOCAL INFILE'C:/wamp/bin/mysql/INTO TABLE test2 fields terminatedby''LINES TERMINATED BY'/0';
效果:
OK,完成!