打開題目
是一串代碼
1 <?php 2 extract($_GET); 3 if (!empty($ac)) 4 { 5 $f = trim(file_get_contents($fn)); 6 if ($ac === $f) 7 { 8 echo "<p>This is flag:" ." $flag</p>"; 9 } 10 else 11 { 12 echo "<p>sorry!</p>"; 13 } 14 } 15 ?>
大致意思就是要上傳 ac和fn兩個參數
且ac的值等於fn文件內容的值
這時候就可以用到php偽協議的php://input
他的作用是可以訪問請求的原始數據的只讀流, 將post請求中的數據作為PHP代碼執行。
順便記一下這個偽協議需要allow_url_include為on
根據代碼
我們可以構造payload: ?ac=1&fn=php://input
再使用hackbar post傳參1
即可得到flag
就是不知道為什么用谷歌瀏覽器里的hackbar的回顯是sorry而火狐的hackbar就能正常回顯出flag