PHP危險函數


部分內容轉載

https://www.jianshu.com/p/277294c1a9f8

https://www.cnblogs.com/yewooo00/p/7551083.html

https://www.cnblogs.com/wfzWebSecuity/p/11202512.html

 

信息泄露

1、phpinfo函數

輸出 PHP 當前狀態的大量信息,包含了 PHP 編譯選項、啟用的擴展、PHP 版本、服務器信息和環境變量(如果編譯為一個模塊的話)、PHP環境變量、操作系統版本信息、path 變量、配置選項的本地值和主值、HTTP 頭和PHP授權信息

 

2、scandir函數

列出指定路徑中的文件和目錄

<?php
var_dump(scandir('./'))
?>

 

執行代碼函數

1、eval函數

eval ( string $code ) : mixed

eval() 函數把字符串按照 PHP 代碼來執行

該字符串必須是合法的 PHP 代碼,且必須以分號結尾。

eval('phpinfo();');

 

2、assert函數

assert ( mixed $assertion [, Throwable $exception ] ) : bool

assert — 檢查一個斷言是否為 FALSE

如果 assertion 是字符串,它將會被 assert() 當做 PHP 代碼來執行

assert('phpinfo()');

 

3、preg_replace函數

preg_replace — 執行一個正則表達式的搜索和替換

preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
當$pattern為/e,會把replacement參數當成PHP代碼執行
preg_replace("/test/e","phpinfo();","test");

 

4、create_function函數

創造一個匿名函數

<?php
$newfunc = create_function('$a,$b', 'return "$a  + $b= " . ($a+$b);');
echo $newfunc(1,2) . "\n";
?>

等價於

<?php function lambda($a,$b){ 
return "$a+$b = ".($a+$b); } 
echo lambda(1,2); 
?>

利用

<?php
$cfunc = create_function('$v', 'return system($v);');
echo $cfunc('whoami');
?>

 

5、call_user_func函數

第一個參數 callback 是被調用的回調函數,其余參數是回調函數的參數

<?php
    $callback= 'assert';
    $parameter = 'phpinfo()';
    call_user_func($callback, $parameter);
?>

 

6、call_user_func_array()函數

使用參數數組中的參數調用第一個參數給定的回調。

<?php
call_user_func_array('assert', array('phpinfo()'));
?>

 

7、array_map() 函數

將用戶自定義函數作用到數組中的每個值上,並返回用戶自定義函數作用后的帶有新值的數組。回調函數接受的參數數目應該和傳遞給 array_map() 函數的數組數目一致。

<?php
    $array = array(0,1,2,3,4,5);
    array_map($_GET[1],$array);
?>
http://localhost/test.php?1=phpinfo

 

命令執行函數

1、exec函數

執行一個外部程序

<?php
echo exec('whoami');
?>

 

2、shell_exec函數

通過 shell 環境執行命令,並且將完整的輸出以字符串的方式返回(安全模式不能使用)

<?php
echo shell_exec('ls');
?>

 

3、passthru函數

passthru ( string $command [, int &$return_var ] ) : void

passthru — 執行外部程序並且顯示原始輸出

<?php
echo passthru('ls');
?>

 


4、system()函數

system ( string $command [, int &$return_var ] ) : string

執行外部程序,並且顯示輸出

<?php
echo system('whoami') ?>

 

 

文件操作函數

copy----------------------拷貝文件
file_get_contents---------將整個文件讀入一個字符串
file_put_contents---------將一個字符串寫入文件
file----------------------把整個文件讀入一個數組中
fopen---------------------打開文件或者url
move_uploaded_file--------將上傳的文件移動到新位置
readfile------------------輸出文件
rename--------------------重命名一個文件或目錄
rmdir---------------------刪除目錄
unlink & delete-----------刪除文件

 

其他函數

1、chgrp()

函數改變文件所屬的組

2、chown()
函數改變指定文件的所有者

3、ini_set()

可用於修改、設置 PHP 環境配置參數
4、ini_alter()
是 ini_set() 函數的一個別名函數,功能與 ini_set() 相同

5、ini_restore()
可用於恢復 PHP 環境配置參數到其初始值

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM