程安
網頁本身似乎沒有任何可以打的地方
那我們只好用上課提到的dirsearch
掃掃看這個網域
一個一個去試會發現大家都是顯示nice try!
而已
只有其中一個是
Bucharesti
應該是一個 github id,那我們就去 github 找找
檔案太多了 直接去 commit 翻翻看
🤔
一樣先掃掃看
有一個設定檔phpinfo.php
可以看
但太多東西了,先回去看 source code 吧
這個部份可以用[]
來繞過長度限制
第二個關鍵點就是這邊的file_get_contents
了
我們要想辦法繞過他的檢查,把有<?php
的 tag 的字串讓他include
去執行
我們直接把file_get_contents
搭配一些關鍵字拿去搜尋
會發現他跟include
和2個php設定有關︰
allow_url_fopen
allow_url_include
剛好我們有phpinfo.php
可以看 來去找一下
此外,他們還很常跟一些 protocol 和 wapper 一起出現
像是http://
,data://
等等
看來要從這些東西裡面找出解法
因為東西無論如何都會寫進meow
這個檔案
我們能動的只有他所在的資料夾的名稱
而且因為allow_url_include=off
的關係
我們也不能從外網 include 東西進去
看來我們只能想辦法讓他讀到 local 的meow
檔案
但是又讓他讀不出<
仔細再多看一些網路上的文章跟 php 的 doc 發現那2個設定似乎是以下意思︰
allow_url_fopen
allow_url_include
include
include_once
require
require_once
也就是說,題目中的file_get_contents
能使用 wrapper
而include
不行
那我們是不是能利用這個差異,來讓file_get_contents
回傳的字串跑掉
這邊使用 hackbar 來輔助一下
成功了!
利用data:
的不完整來讓file_get_contents
壞掉回傳FALSE
,自然就通過檢測了
而include
不能使用wrapper,所以他就會把data:/meow
當作一般的相對路徑去找檔案
所以就拿到了我們剛剛輸入的<
一切都就緒了,那就來寫 php 吧