php系统命令执行常用函数
php命令执行常用函数总结
造成的原因:
php命令执行漏洞主要是一些函数的参数过滤不严格所导致,
OS端常用的命令函数:
可以执行OS命令的函数一共有7个:
1 | system(), |
Tips:
另外,反单引号(`)也可以执行命令,不过要调用shell_exec()函数
函数讲解:
oox1:
system(),exec(),shell_exec()和passthru()函数是可以直接传入命令并且会返回执行结果
1 | system('whoami'); //返回当前web服务器用户 |
00x2:
pcntl_exec是php的多进程处理扩展,在处理大量任务的情况下会使用
1 | pcntl_exec("/bin/bash",array($_POST["cmd"])); |
00x3:
popen()和proc_open()函数不会直接返回执行结果,而是返回一个文件指针
1 | popen('whoami >>D:/2.txt','r'); //两个参数,第二个参数是指针文件的连接模式,有r和w模式 |
00x4:
反单引号(`)执行命令需要调用shell_exec()函数
1 | echo `whoami`; //返回当前用户 |
防命令执行的注入函数:
00x1:
escapeshellcmd()函数是过滤的整条命令
1 | eche(escapeshellcmd($_GET['a'])); |
请求1.php?a=whoami’, 在windows下返回whoami^’,在linux下返回whoami’
00x2:
escapeshellarg()函数则是过滤参数
1 | echo escapeshellarg('a"'); //会见双引号替换成空格,输出为"a " |
常见的绕过disable-fucation:
1 | "exec", "shell_exec", "system", "passthru", "proc_open", "show_source", |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 like4h!