第一次做檔案包含類題目,總結一下
low等級:
可以看到,這裡的應對策略是對輸入值進行過濾
(1)最常用的應該是php://filter 協議
最原始的是php://filter/resource=d.txt(這裡發現如果不是php型別的檔案也能讀取,只是不是網頁形式)
確實是乙個獲取php原始碼的好方法。
(2)php://input 可以利用這個協議讓後台**包含我們想讓其顯示的php**,例如
(3)file:// 與php://filter類似,訪問本地檔案,但是只能傳入絕對路徑
更多偽協議可以訪問鏈結
**在測試了包含點存在包含漏洞以後,並不是都可以使用filter偽協議包含出原始碼的,因為allow_url_fopen和allow_url_include會影響到fopen和include等函式對於偽協議的支援。
allow_url_include影響php://input的使用,若不開啟則無法使用。
當allow_url_fopen開啟時,可以包含任意url。
例如只開啟allow_url_include時,只能包含遠端檔案和使用php://input
舉個例子
等我做了來更新
下面是其他的一些應對防禦機制的方法,暫時還沒用到,先留存
list item
繞過 waf 的方法
字典繞過
?f=php://filter/convert.base64-encode/resource=login.php(過濾了操作名read)
?f=php://filter/read=convert.base64-encode/resource=1.jpg/resource=./show.php(正則 /resource=*.jpg/i)
?f=data:text/plain,<?php phpinfo()?>
?file=data:text/plain;base64,pd9wahagcghwaw5mbygppz4=
這裡說一下第二條,這是2018 iscc中的一道題目的繞過方法。
這裡用正則匹配了resource=,我們就可以用重寫的方法來繞過正則。
list item
截斷包含
zip協議和phar協議(以後用到後再細查,現在只需知道這個可以用於繞過對php的限制)
在實戰過程中,若發現存在檔案上傳但是沒有辦法直接上傳php檔案,可以傳zip壓縮檔案,我們就利用這兩個協議,將php檔案打包成zip檔案來包含裡面的php指令碼。
phar://、zip://,都可以看到在phpinfo中有相應的描述。
例如指令碼檔案為1.php,打包成1.zip,然後再改名為1.jpg,上傳之後包含1.jpg中的php檔案即可。
經測試其他型別(例如txt)內有php**,也能被解釋為php語言顯示
南郵大學CTF web LFI本地檔案包含解題思路
0x00 php filter簡單理解 php filter 是php中獨有的乙個協議,可以作為乙個中間流來處理其他流,可以進行任意檔案的讀取 根據名字,filter,可以很容易想到這個協議可以用來過濾一些東西 使用不同的引數可以達到不同的目的和效果 名稱 描述 備註 resource 要過濾的資料...
南郵攻防訓練平台逆向第四題WxyVM
檔案elf檔案,執行輸入flag,用ida開啟逆向演算法 不是很複雜,可以看出flag長度需要24,最終會和已給出dword 601060進行比較,一致則成功,那麼現在只需要看上面的sub 4005b6 和函式了 跟進兩個位址進去看一下,發現有已經給出的處理所需資料,只是比較多,有15000個,想了...
CTF 南郵攻防平台(web2)
burpsuit抓包,將響應頭中的cookie項的login 0 改為login 1 即得flag 1 按照指示訪問index.txt 2 讀php原始碼,發現是urldecode多進行了一次,那麼傳參的時候多進行兩次url編碼 提交即可 burpsuit抓包,在響應頭中新增x forwarded ...