目录
一、漏洞原理
将用户输入的数据当作系统命令进行执行,linux即为bash虚拟终端,windows即为cmd虚拟终端;
二、函数解析
system():可执行多条命令且返回所有
exec():只能执行一条命令需要手动打印结果且仅返回最后一行
shell_exec():需要手动打印结果,会输出全部数据
passthru():和system类似
特殊符号例如反引号:里面的内容会被当作系统命令执行,底层是shell_exec函数
1、system函数
2、exec函数
手动输出
3、shell_exec函数
手动输出,会显示所有内容
4、passthru与system类似
5、反引号,与shell_exec()一样
手动输出
三、管道符
1、windows
|:直接执行该管道符后面的命令,例如ping 127.0.0.1|whoami,会直接执行whoami命令
||:前面的语句出错才会执行后面的语句
&:前面的语句可真可假
&&:前面的语句必须为真才会执行后面的语句
2、linux
都是一样的几乎,多了一个分号
分号:命令依次执行
四、防御
1、尽量不使用命令执行函数;php中不受控制的函数尽量不使用
2、足够的过滤例如下面这个dvwa的impossible