參考文獻:
1.php的bug#69892
$users = array(
"0:9b5c3d2b64b8f74e56edec71462bd97a" ,
"1:4eb5fb1501102508a86971773849d266",
"2:facabd94d57fc9f1e655ef9ce891e86e",
"3:ce3924f011fe323df3a6a95222b0c909",
"4:7f6618422e6a7ca2e939bd83abde402c",
"5:06e2b745f3124f7d670f78eabaa94809", //hund
"6:8e39a6e40900bb0824a8e150c0d0d59f",
"7:d035e1a80bbb377ce1edce42728849f2",
"8:0927d64a71a9d0078c274fc5f4f10821",
"9:e2e23d64a642ee82c7a270c6c76df142",
"10:70298593dd7ada576aff61b6750b9118"
);$valid_user = false;
$input = $_cookie['user'];
$input[1] = md5($input[1]);
foreach ($users as $user)
}if (!$valid_user)
if ($uid == 0) else
題目其實很容易理解,就是輸入user[0]和user[1]
,其中user[0]==0
且user[1]=$users中的任意乙個
看見0~10這些內容第一反應就是md5解密,都試過一遍之後發現只有第五個能解出來,user[0]=5;user[1]=hund
這個就可以得到你是普通使用者的歡迎資訊了,但是想要的是管理員的,所以得嘗試將$uid=0
這個條件實現,這個時候就需用到php的bug#69892
[2015-06-20 14:29 utc] [email protected] 描述: ------------
var_dump([0 => 0] === [0x100000000 => 0]); //布林(true)
所有版本:
php執行在32位系統的會將陣列的鍵 0x100000000=2^32=4294967296 變換為字串,而在64位系統會直接 陣列中的鍵4294967296 為unsigned long 型別 且等同於0
cookie: user[4294967296]=5;user[1]=hund;
2.php 0819<?php
// closure, because of namespace!
$challenge = function()
trycatch (exception $e)
return ($spaceone === '1337');
};?>
通過get的eval引數
傳入並賦值到變數f,然後經過str_replace()的過濾,要求長度小於13,並且不包含字串return,接著執行eval,然後讓`spaceone === '1337'返回true。最後一行
spaceone === '1337'`,要求型別和值都得相等。看一下str_replace(),過濾了單引號,雙引號,所以如果直接get傳參`index.php?eval='1337'`進去,在經過過濾後,到最後會變為spaceone=1337,不等。
可以用heredoc
構造繞過單引號
《內容中不能包括特殊符號,以乙個變數起始,以相同的變數名+;
結束(還要再加上乙個換行符!)
?eval=<<
小組python學習任務1
步驟1 安裝軟體 1 anaconda 2 vscode 3 vscode安裝的外掛程式 4 anaconda的使用 下面的命令需要在anaconda中的命令列中輸入 環境建立 conda create name yourenv python 2.7 name 也可以縮寫為 n yourenv 是新...
初級演算法學習小組 任務1 線性回歸演算法梳理
監督學習研究的是屬性x和輸出值y之間的關係。無監督研究的是屬性和屬性之間的關係,這時候沒有輸出值或者標籤值y。我們學得的模型,它作用於新樣本的表現能力,稱為泛化能力。模型對訓練集適配得很好,模擬得很好,在測試集上卻表現很差,叫作過擬合。這時候方差會比較大。過擬合是無法完全避免的,只能盡可能去減少過擬...
5 6 小組練筆1
背景 平面直角座標系 要求 定義乙個點類,資料成員至少包含 座標值x,y。函式成員至少包含 建構函式,move函式 可對點進行移動 定義乙個線類,資料成員至少包括 點類物件陣列指標 指向動態陣列的首位址 點的個數 n。函式成員至少包括 建構函式,複製建構函式,move函式 可對線進行平移 輸出該線各...