�ļ�ϵͳ��ȫ

Table of Contents

PHP ��Ӵ����������ϵͳ�й����ļ���Ŀ¼Ȩ�޵İ�ȫ���ơ����ʹ����Ա���Կ�����Щ�ļ����ļ�ϵͳ���ǿɶ��ġ������ر�ע�����ȫ�ֵĿɶ��ļ�����ȷ��ÿһ����Ȩ�޵��û�����Щ�ļ��Ķ�ȡ�������ǰ�ȫ�ġ�

PHP �����Ϊ���û������������ļ�ϵͳ��������ȫ�п���ͨ����дһ�� PHP ��������ȡϵͳ�ļ��� /etc/passwd���������������Լ����ʹ�����ӡ����ȵȡ���˱���ȷ�� PHP �����ȡ��д����Ǻ��ʵ��ļ���

�뿴����Ĵ��룬�û���Ҫɾ���Լ���Ŀ¼�е�һ���ļ��������������ͨ�� web �����������ļ�ϵͳ����� Apache �û���Ȩɾ���û�Ŀ¼�µ��ļ���

Example #1 ���Ա������а�ȫ���ᵼ��......

<?php
// ���û�Ŀ¼��ɾ��ָ�����ļ�
$username = $_POST['user_submitted_name'];
$userfile = $_POST['user_submitted_filename'];
$homedir = "/home/$username";
unlink ("$homedir/$userfile");
echo 
"The file has been deleted!";
?>
��Ȼ username �� filename ��������ͨ���û������ύ���ǾͿ����ύ���˵��û������ļ�������������ɾ��������Ӧ��������ɾ�����ļ�����������£���Ҫ����������ʽ����֤�����뿴����ύ�ı�����"../etc/"��"passwd"�ᷢ��ʲô������Ĵ���͵�ͬ�ڣ�

Example #2 ......�ļ�ϵͳ����

<?php
// ɾ��Ӳ�����κ� PHP �з���Ȩ�޵��ļ������ PHP �� root Ȩ�ޣ�
$username = $_POST['user_submitted_name']; // "../etc"
$userfile = $_POST['user_submitted_filename']; // "passwd"
$homedir  = "/home/$username"; // "/home/../etc"

unlink("$homedir/$userfile"); // "/home/../etc/passwd"

echo "The file has been deleted!";
?>
��������Ҫ��ʩ����ֹ�������⡣
  • ֻ�� PHP �� web �û������޵�Ȩ�ޡ�
  • ��������ύ�����ı�����
�����ǸĽ��Ľű���

Example #3 ����ȫ���ļ������

<?php
// ɾ��Ӳ���� PHP ��Ȩ���ʵ��ļ�
$username = $_SERVER['REMOTE_USER']; // ʹ����֤����
$userfile = basename($_POST['user_submitted_filename']);
$homedir = "/home/$username";

$filepath = "$homedir/$userfile";


if (
file_exists($filepath) && unlink($filepath)) {
    
$logstring = "Deleted $filepath\n";
} else {
    
$logstring = "Failed to delete $filepath\n";
}
$fp = fopen("/home/logging/filedelete.log", "a");
fwrite ($fp, $logstring);
fclose($fp);

echo 
htmlentities($logstring, ENT_QUOTES);
?>
Ȼ������������Ȼ����ȱ�ݵġ������֤ϵͳ�����û������Լ��ĵ�¼�û��������û�ѡ����"../etc/"��Ϊ�û�����ϵͳ��һ�������ˡ����ԣ���Ҫ��ǿ��飺

Example #4 ����ȫ���ļ������

<?php
$username 
= $_SERVER['REMOTE_USER']; // ʹ����֤����
$userfile     = $_POST['user_submitted_filename'];
$homedir = "/home/$username";

$filepath     = "$homedir/$userfile";
if (!
ctype_alnum($username) || !preg_match('/^(?:[a-z0-9_-]|\.(?!\.))+$/iD', $userfile)) {
    die(
"Bad username/filename");
}
//����......
?>

���ݲ���ϵͳ�IJ�ͬ�������Ÿ��ָ�����Ҫע����ļ���������ϵ��ϵͳ���豸��/dev/ ���� COM1���������ļ���/ect/ �ļ��� .ini�ļ��������õĴ洢����/home/ ���� My Documents���ȵȡ����ڴ�ԭ�򣬽���һ�����Խ�ֹ����Ȩ�޶�ֻ������ȷ�����ͨ��������Щ��