0x01 級別low1.原始碼
引數command execution source
<?php
if( isset( $_post[ 'submit' ] ) ) else
} ?>
2.說明:
stristr函式
stristr(string,search,before_search)
描述string
必需。規定被搜尋的字串。
search
必需。規定要搜尋的字串。
如果該引數是數字,則搜尋匹配該數字對應的 ascii 值的字元。
before_search
可選。預設值為 "false" 的布林值。
如果設定為 "true",它將返回 search 引數第一次出現之前的字串部分。
php_uname函式 是返回有關系統資訊
3.分析
基本上沒有什麼防護機制 可輕鬆使用 "&&"或者";"字元進行連線命令
如:在輸入框輸入 127.0.0.1 && net user 、127.0.0.1 ; cd help && dir
0x02 級別medium1.原始碼
加入了黑名單機制 替換了"&&" ";" 這樣的連線字元command execution source
<?php
if( isset( $_post[ 'submit'] ) ) else
} ?>
2.說明
array_keys(array,value,strict)
引數描述
array
必需。規定陣列。
value
可選。您可以指定鍵值,然後只有該鍵值對應的鍵名會被返回。
strict
可選。與 value 引數一起使用。可能的值:
str_replace(find,replace,string,count)
引數描述
find
必需。規定要查詢的值。
replace
必需。規定替換 find 中的值的值。
string
必需。規定被搜尋的字串。
count
可選。乙個變數,對替換數進行計數。
3.分析
$substitutions = array(
'&&' => '',
';' => '',
); $target = str_replace( array_keys( $substitutions ), $substitutions, $target );
繞過方法
如:127.0.0.1 | dir、127.0.0.1 & dir 、 127.0.0.1 &; dir
0x03 級別high1.源**
command execution source
<?php
if( isset( $_post[ 'submit' ] ) ) else
} else
} ?>
2. 說明
stripslashes(string)
引數描述
string
必需。規定要檢查的字串。
返回值:
返回剝離了反斜槓的字串。
explode(separator,string,limit)
引數描述
separator
必需。規定在**分割字串。
string
必需。要分割的字串。
limit
可選。規定所返回的陣列元素的數目。 可能的值:
3. 分析
這個暫時不知道繞過的方法,希望大佬能指出來,謝謝了
0x04 結語引用:
dvwa命令注入漏洞
在windows下測試命令執行漏洞時,返回的都是亂碼 找到www dvwa master dvwa includes dvwapage.inc.php 將277 286行的utf 8改為gb2312 只改head中的值還不起作用,還要改http header中content type的內容 或者在p...
2 DVWA親測命令執行漏洞
先看low級 提示讓我們輸入乙個ip位址來實現ping,猜測會是在系統終端中實現的,我們正常輸入127.0.0.那我們就可以利用這個使用其他cmd命令 我們輸入127.0.0.1 net user 我們順便看一下源 if isset post submit else feedback for the...
DVWA 命令執行審計
使用post方式接受表單,isset 判斷是否傳入,將傳入的 ip賦值給 target 使用php name獲取主機資訊,用 stristr 判斷是否是 win系統 通過if進行判斷是否為空後,使用shell exec 執行並將所有輸出流作為字串返回 此執行過程無任何過濾。將ip的值賦給變數targ...