像是類似這樣的網址,如果把 ?file=report.pdf
改成 ?file=../../../../etc/passwd
就有可能得到一些機密資料
其他可以參考 這邊
%00
來繞過,但在 php5.4 已經被修掉了)到網頁之後她會很好心的告訴你 Flag 的位置,然後你可以用 Path Traversal 的方式去找到 Flag 了
這題有塞了一個正則表達式的 WAF /^apple|banana|cappo$/
但其實是有漏洞的,他只要符合
其中一個就算符合 (正確應該是 ^(apple|banana|cappo)$
) ,所以就能很輕鬆地繞過了
用 include 表示他會自動把檔案 parse ,假設 include 的是 php 就會自動 parse 成 php 的東西 (如果本來某個路徑的東西是不能拿的,就可能可以用 LFI 拿到,就像下面這樣)
parse 之後有可能會讓一些東西不見,就像是註解的內容,這時候可以用 php 偽協議把內容轉成 base64 ,然後再解碼就可以看到原本的內容了
格式: php://filter/{read= / write= / <empty>(自己決定要讀檔還寫檔)}convertor}/resource=<file_path>
convertor: string.rot13, convert.base64-encode, convert.base64-decode, zlib.delate... 參見 這邊
如果有多個 convertor ,就用 |
來串起來
將 flag.php 用 base64 列印出來之後再解密就能得到 Flag 了
這題要取得在根目錄的 Flag ,直接偷 別人寫好的 webshell 來串起來用就可以了,因為他用的是 eval
所以要用 system
來執行 linux 指令,所以只要在後面加上 &1=system('ls /')
然後 `&1=system('cat {flag名稱}') ,就解出來了~