題目的hint:flag就在某六位變數中。
我們開啟題目:
<?php
include
"flag.php"; //包含flag.php這個檔案
$a = @$_request['hello'];//$a這個變數請求變數hello的值
if(!preg_match('/^\w*$/',$a ))
eval("var_dump($$a);");//如果匹配輸出\$\$a的值
show_source(__file__);
?>
先來一波知識點普及:
include」flag.php」 :則表示已經固定flag.php,這時候我們要去尋找其他我們能控制的東西,比如a
而$_request則具有post 和get的功能,但是request比較慢。通過post和get方法提交的所有資料都可以通過request陣列獲得
if語句中是乙個正則匹配,^是這個表示式的起始符號;\w表示任意乙個字元(a-z、0-9); * 表示匹配前面的子表示式零次或多次。例如,zo* 能匹配 「z」 以及 「zoo」。 * 等價於;最後的$表示末尾。所以這個判斷語句就是輸入到a中,的如果全是字元,則為真
var_dump:顯示關於乙個或多個表示式的結構資訊,包括表示式的型別與值。陣列將遞迴展開值,通過縮排的陣列形式顯示其結構,例如:
<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>
以上例程會輸出:
array(3)
}
5.這個
估計就有很多同學搞不懂,$$為可變變數,簡單說下他的用法就是這樣:
$a = "b";
$b = "c";
echo $$a;`
結果輸出為c
由於這題涉及到了可變變數,所以我們很容易就想到了用超全域性變數$globals一次性查詢所有的東西
給hello賦值後得到flag
總結:這題本身難度不大,主要是涉及到了許多陌生的東西,而且,不能看到flag.php就一股腦的想檔案包含那些的去了,總之還是學到了許多東西
暑期訓練 day1
暑期訓練 day1 趙景樂今天主要通過 演算法競賽 一書學習了位運算,遞推遞迴,收穫還不小,一是通過位運算了解了一些之前不了解的知識與演算法,二是通過書上的一道hamilton演算法題目又複習了一遍dp。在今天的兩個小時比賽中我因為讀題不准得了4個罰時,又因為陣列定義在主函式裡面浪費了不少的時間和3...
演算法練習1
自己不怎麼關注演算法,但是面試的時候常有一些公司就會給演算法題目,目的也很直接,自己每日一練就好。思路 使用純 c來實現。條件1,陣列b內所有數字加起來為10 動態調整陣列b內的數值。因為時間先後的原因,會導致先前統計個數出現的次數不正確。include include static int a 1...
程式設計練習1
1.編寫乙個程式列印乙個表,表的每一行都給出乙個整數,它的平方以及它的立方。要求使用者輸入表的上限與下限。使用for迴圈。include includeusing namespace std void funtiongetin int a,int b int main 2.編寫乙個程式,實現9 9乘...