拐彎抹角分值:10
- 來源: cwk32
- 難度:易
- 參與人數:5765人
- Get Flag:2089人
- 答題人數:2143人
- 解題通過率:97%
如何欺騙服務器,才能拿到Flag?
格式:CTF{}
解題鏈接: http://ctf5.shiyanbar.com/10/indirection/
原題鏈接:http://www.shiyanbar.com/ctf/1846
【解題報告】
這是我入門web以來寫的第十三題,這道題最簡單的做法就是直接訪問index.php
,然后flag就可以直接拿到了,但是呢,這是一道教學題,我們可以自習看一下這個php代碼,這個代碼把各種繞過的方法都寫上去了,我們不用剛才的那種方法應該怎么辦呢?我們可以利用偽靜態的方法去繞過~~~
早期搜索引擎對於這些動態網頁參數的形式頁面不容易收錄,於是會將這些動態頁面轉化成以html結尾的靜態頁面,這些頁面是真正的靜態頁面,保存在服務器的硬盤上。因此隨着數據的不斷增加,會對網站的空間占有率大大增加,於是一種URLRewrite(URL重寫)即偽靜態技術出現了,避免了真正靜態文件的大量產生。
網頁偽靜態化的優點
1、維護方便,網頁每天都自動變化,不用維護或者說極大地減少了維護量。
2、可以方便的實現對搜索引擎的優化,易於被搜索引擎收錄。
3、縮短了URL的長度,隱藏文件實際路徑提高了安全性,易於用戶記憶和輸入。
4、占空間比較小,不像純靜態那樣多占用近過多的空間。
5、安全性能通過URL地址隱藏或加密,讓黑客無法找到真實的動態頁面,同時動態文件不需要太高的權限,從而避免了木馬的注入。
偽靜態最大的缺點就是會占用一定量的CPU使用率,增加服務器的響應時間。
這道題我們只需要輸入兩個index.php
就行了,服務器只會解析第一個index.php
,會繞過前面那么多苛刻的條件,這就是偽靜態!!!我們就可以拿到flag了!
我們在這里做個繞過的簡單小結:
//第一,我們可以構造 /indirection/a/../ /indirection/./ 等等這一類的
//所以,第一個要求就是不得出現 ./
//第二,我們可以構造 \ 來代替被過濾的 /
//所以,第二個要求就是不得出現 ../
//第三,有的系統大小寫通用,例如 indirectioN/
//你也可以用?和#等等的字符繞過,這需要統一解決
//所以,第三個要求對可以用的字符做了限制,a-z / 和 .
//第四,多個 / 也是可以的
//所以,第四個要求是不得出現 //
//第五,顯然加上index.php或者減去index.php都是可以的
//所以我們下一個要求就是必須包含/index.php,並且以此結尾
//第六,我們知道在index.php后面加.也是可以的
//所以我們禁止p后面出現.這個符號
//第七,現在是最關鍵的時刻
//你的$URL必須與/indirection/index.php有所不同