ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼ÊõʵÏÖÒÔ¼°Ô¤·À´ëÊ©(Ò»)
2014-11-24 07:22:23 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:5´Î
Tags£º³õ̽ PHP SQL ×¢Èë ¹¥»÷ ¼¼Êõ ʵÏÖ ÒÔ¼° Ô¤·À´ëÊ©

SQL¹¥»÷£¨SQL injection£¬Ì¨Í峯×÷SQL×ÊÁÏÒþÂë¹¥»÷£©£¬¼ò³Æ×¢Èë¹¥»÷£¬ÊÇ·¢ÉúÓÚÓ¦ÓóÌÐòÖ®Êý¾Ý¿â²ãµÄ°²È«Â©¶´¡£¼ò¶øÑÔÖ®£¬ÊÇÔÚÊäÈëµÄ×Ö·û´®Ö®ÖÐ×¢ÈëSQLÖ¸ÁÔÚÉè¼Æ²»Á¼µÄ³ÌÐòµ±ÖкöÂÔÁ˼ì²é£¬ÄÇôÕâЩעÈë½øÈ¥µÄÖ¸Áî¾Í»á±»Êý¾Ý¿â·þÎñÆ÷ÎóÈÏΪÊÇÕý³£µÄSQLÖ¸Áî¶øÔËÐУ¬Òò´ËÔâµ½ÆÆ»µ¡£

Óв¿·ÝÈËÈÏΪSQL×¢Èë¹¥»÷ÊÇÖ»Õë¶ÔMicrosoft SQL Server¶øÀ´£¬µ«Ö»ÒªÊÇÖ§³ÖÅú´¦ÀíSQLÖ¸ÁîµÄÊý¾Ý¿â·þÎñÆ÷£¬¶¼ÓпÉÄÜÊܵ½´ËÖÖÊÖ·¨µÄ¹¥»÷¡£

Ô­Òò

ÔÚÓ¦ÓóÌÐòÖÐÈôÓÐÏÂÁÐ×´¿ö£¬Ôò¿ÉÄÜÓ¦ÓóÌÐòÕý±©Â¶ÔÚSQL InjectionµÄ¸ß·çÏÕÇé¿öÏ£º

ÔÚÓ¦ÓóÌÐòÖÐʹÓÃ×Ö·û´®Áª½á·½Ê½×éºÏSQLÖ¸Áî¡£ÔÚÓ¦ÓóÌÐòÁ´½ÓÊý¾Ý¿âʱʹÓÃȨÏÞ¹ý´óµÄÕË»§£¨ÀýÈçºÜ¶à¿ª·¢ÈËÔ±¶¼Ï²»¶ÓÃsa£¨ÄÚÖõÄ×î¸ßȨÏÞµÄϵͳ¹ÜÀíÔ±ÕË»§£©Á¬½ÓMicrosoft SQL ServerÊý¾Ý¿â£©¡£ÔÚÊý¾Ý¿âÖпª·ÅÁ˲»±ØÒªµ«È¨Á¦¹ý´óµÄ¹¦ÄÜ£¨ÀýÈçÔÚMicrosoft SQL ServerÊý¾Ý¿âÖеÄxp_cmdshellÑÓÉìÔ¤´æ³ÌÐò»òÊÇOLE AutomationÔ¤´æ³ÌÐòµÈ£©Ì«¹ýÓÚÐÅÈÎÓû§ËùÊäÈëµÄÊý¾Ý£¬Î´ÏÞÖÆÊäÈëµÄ×Ö·ûÊý£¬ÒÔ¼°Î´¶ÔÓû§ÊäÈëµÄÊý¾Ý×öDZÔÚÖ¸ÁîµÄ¼ì²é¡£

×÷ÓÃÔ­Àí

SQLÃüÁî¿É²éѯ¡¢²åÈë¡¢¸üС¢É¾³ýµÈ£¬ÃüÁîµÄ´®½Ó¡£¶øÒÔ·ÖºÅ×Ö·ûΪ²»Í¬ÃüÁîµÄÇø±ð¡££¨Ô­±¾µÄ×÷ÓÃÊÇÓÃÓÚSubQuery»ò×÷Ϊ²éѯ¡¢²åÈë¡¢¸üС¢É¾³ý¡­¡­µÈµÄÌõ¼þʽ£©SQLÃüÁî¶ÔÓÚ´«ÈëµÄ×Ö·û´®²ÎÊýÊÇÓõ¥ÒýºÅ×Ö·ûËù°üÆðÀ´¡£¡¶µ«Á¬Ðø2¸öµ¥ÒýºÅ×Ö·û£¬ÔÚSQLÊý¾Ý¿âÖУ¬ÔòÊÓΪ×Ö·û´®ÖеÄÒ»¸öµ¥ÒýºÅ×Ö·û¡·SQLÃüÁîÖУ¬¿ÉÒÔ×¢Èë×¢½â¡¶Á¬Ðø2¸ö¼õºÅ×Ö·û -- ºóµÄÎÄ×ÖΪע½â£¬»ò¡°/*¡±Óë¡°*/¡±Ëù°üÆðÀ´µÄÎÄ×ÖΪע½â¡·Òò´Ë£¬Èç¹ûÔÚ×éºÏSQLµÄÃüÁî×Ö·û´®Ê±£¬Î´Õë¶Ôµ¥ÒýºÅ×Ö·û×÷È¡´ú´¦ÀíµÄ»°£¬½«µ¼Ö¸Ã×Ö·û±äÁ¿ÔÚÌîÈëÃüÁî×Ö·û´®Ê±£¬±»¶ñÒâ´Ü¸ÄÔ­±¾µÄSQLÓï·¨µÄ×÷Óá£

ÒÔÉÏÄÚÈÝÕª×Ôά»ù°Ù¿Æ@

×î½ü·­µ½Ò»±¾ÓйØSQL×¢Èë¹¥»÷Óë·ÀÓùµÄÒ»±¾Ê飬µ±È»Õâ±¾ÊéÄÚÈݺܳ¤£¬ÎÒ»¹Ö»¶ÁÁËǰÁ½Õ²¿·Ö£¬ºóÐøÎÒ»áÂýÂý°ÑÊéÀïµÄ֪ʶÊáÀíµ½ÎҵIJ©¿ÍÖÐÀ´£¡

\

SQL ×¢Èë¹¥»÷µÄÖ÷ÒªÔ­Òò£¬ÊÇÒòΪÒÔÏÂÁ½µãÔ­Òò£º

1. php ÅäÖÃÎļþ php.ini ÖÐµÄ magic_quotes_gpcÑ¡ÏîûÓдò¿ª£¬±»ÖÃΪ off£»

2. ¿ª·¢ÕßûÓжÔÊý¾ÝÀàÐͽøÐмì²éºÍתÒå¡£

²»¹ýÊÂʵÉÏ£¬µÚ¶þµã×îÎªÖØÒª¡£ÎÒÈÏΪ£¬ ¶ÔÓû§ÊäÈëµÄÊý¾ÝÀàÐͽøÐмì²é£¬Ïò MYSQL Ìá½»ÕýÈ·µÄÊý¾ÝÀàÐÍ£¬ÕâÓ¦¸ÃÊÇÒ»¸ö web ³ÌÐòÔ±×î×î»ù±¾µÄËØÖÊ¡£µ«ÏÖʵÖУ¬³£³£ÓÐÐí¶àС°×ʽµÄ Web ¿ª·¢ÕßÍüÁËÕâµã£¬´Ó¶øµ¼ÖºóÃŴ󿪡£

Ϊʲô˵µÚ¶þµã×îÎªÖØÒª£¿ÒòΪÈç¹ûûÓеڶþµãµÄ±£Ö¤£¬magic_quotes_gpc Ñ¡Ï²»ÂÛΪ on£¬»¹ÊÇΪ off£¬¶¼ÓпÉÄÜÒý·¢ SQL ×¢Èë¹¥»÷¡£ÏÂÃæÀ´¿´Ò»Ï¼¼ÊõʵÏÖ£º

Ò»¡¢ magic_quotes_gpc= Off ʱµÄ×¢Èë¹¥»÷

magic_quotes_gpc = Off ÊÇ php ÖÐÒ»Öַdz£²»°²È«µÄÑ¡Ïа汾µÄ php ÒѾ­½«Ä¬ÈϵÄÖµ¸ÄΪÁË On¡£µ«ÈÔÓÐÏ൱¶àµÄ·þÎñÆ÷µÄÑ¡ÏîΪ off¡£±Ï¾¹£¬ÔٹŶ­µÄ·þÎñÆ÷Ò²ÊÇÓÐÈËÓõġ£

µ±magic_quotes_gpc = On¡¡Ê±£¬Ëü»á½«Ìá½»µÄ±äÁ¿ÖÐËùÓÐµÄ '(µ¥ÒýºÅ)¡¢"(Ë«ºÅºÅ)¡¢(·´Ð±Ïß)¡¢¿Õ°××Ö·û£¬¶¼»áÔÚÇ°Ãæ×Ô¶¯¼ÓÉÏ ¡£ÏÂÃæÊÇ PHPµÄ¹Ù·½ËµÃ÷£º

magic_quotes_gpc boolean

Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), (backslash) and NUL's are escaped with a backslash automatically

Èç¹ûûÓÐתÒ壬¼´ off Çé¿öÏ£¬¾Í»áÈù¥»÷ÕßÓлú¿É³Ë¡£ÒÔÏÂÁвâÊԽű¾ÎªÀý£º

< 
if (isset($_POST["f_login"])) {
  // Á¬½ÓÊý¾Ý¿â...
  // ...´úÂëÂÔ...
  // ¼ì²éÓû§ÊÇ·ñ´æÔÚ
  $t_strUname = $_POST["f_uname"];
  $t_strPwd = $_POST["f_pwd"];
  $t_strSQL = "SELECT * FROM tbl_users WHERE username='$t_strUname' AND password = '$t_strPwd' LIMIT 0,1";

  if ($t_hRes = mysql_query($t_strSQL)) {
    // ³É¹¦²éѯ֮ºóµÄ´¦Àí. ÂÔ...
  }
}
 >
<html>test

Username:
Password:
ÔÚÕâ¸ö½Å±¾ÖУ¬µ±Óû§ÊäÈëÕý³£µÄÓû§ÃûºÍÃÜÂ룬¼ÙÉèÖµ·Ö±ðΪ zhang3¡¢abc123£¬ÔòÌá½»µÄ SQL Óï¾äÈçÏ£º
SELECT * FROM tbl_users WHERE username='zhang3' AND password = 'abc123' LIMIT 0,1
Èç¹û¹¥»÷ÕßÔÚ username ×Ö¶ÎÖÐÊäÈ룺zhang3' OR 1=1 #£¬ÔÚ password ÊäÈë abc123£¬ÔòÌá½»µÄ SQL Óï¾ä±ä³ÉÈçÏ£º
SELECT * FROM tbl_users WHERE username='zhang3' OR 1=1 #' AND password = 'abc123' LIMIT 0,1
ÓÉÓÚ # ÊÇ mysqlÖеÄ×¢ÊÍ·û£¬ #Ö®ºóµÄÓï¾ä²»±»Ö´ÐУ¬ÊµÏÖÉÏÕâÐÐÓï¾ä¾Í³ÉÁË£º
SELECT * FROM tbl_users WHERE username='zhang3' OR 1=1

ÕâÑù¹¥»÷Õ߾ͿÉÒÔÈÆ¹ýÈÏÖ¤ÁË¡£Èç¹û¹¥»÷ÕßÖªµÀÊý¾Ý¿â½á¹¹£¬ÄÇôËü¹¹½¨Ò»¸ö UNION SELECT£¬ÄǾ͸üΣÏÕÁË£º

¼ÙÉèÔÚ username ÖÐÊäÈ룺zhang3 ' OR 1 =1 UNION select cola, colb,cold FROM tbl_b #

ÔÚpassword ÊäÈ룺 abc123£¬

ÔòÌá½»µÄ SQL Óï¾ä±ä³É£º

SELECT * FROM tbl_users WHERE username='zhang3 ' OR 1 =1 UNION select cola, colb,cold FROM tbl_b #' AND password = 'abc123' LIMIT 0,1
ÕâÑù¾ÍÏ൱ΣÏÕÁË¡£

¶þ¡¢magic_quotes_gpc = On ʱµÄ×¢Èë¹¥»÷

µ± magic_quotes_gpc = On ʱ£¬¹¥»÷ÕßÎÞ·¨¶Ô×Ö·ûÐ͵Ä×ֶνøÐÐ SQL ×¢Èë¡£Õâ²¢²»´ú±íÕâ¾Í°²È«ÁË¡£Õâʱ£¬¿ÉÒÔͨ¹ýÊýÖµÐ͵Ä×ֶνøÐÐSQL×¢Èë¡£

ÔÚ×îаæµÄ MYSQL 5.x ÖУ¬ÒѾ­ÑϸñÁËÊý¾ÝÀàÐ͵ÄÊäÈ룬ÒÑĬÈϹرÕ×Ô¶¯ÀàÐÍת»»¡£ÊýÖµÐ͵Ä×ֶΣ¬²»ÄÜÊÇÒýºÅ±ê¼ÇµÄ×Ö·ûÐÍ¡£Ò²¾ÍÊÇ˵£¬¼ÙÉè uid ÊÇÊýÖµÐ͵ģ¬ÔÚÒÔǰµÄ mysql °æ±¾ÖУ¬ÕâÑùµÄÓï¾äÊǺϷ¨µÄ£º

INSERT INTO tbl_user SET uid="1";
SELECT * FROM tbl_user WHERE uid="1";
ÔÚ×îÐ嵀 MYSQL 5.x ÖУ¬ÉÏÃæµÄÓï¾ä²»ÊǺϷ¨µÄ£¬±ØÐëд³ÉÕâÑù£º
INSERT INTO tbl_user SET uid=1;
SELECT * FROM tbl_user WHERE uid=1;
ÕâÑùÎÒÈÏΪÊÇÕýÈ·µÄ¡£ÒòΪ×÷Ϊ¿ª·¢Õߣ¬ÏòÊý¾Ý¿âÌá½»ÕýÈ·µÄ·ûºÏ¹æÔòµÄÊý¾ÝÀàÐÍ£¬ÕâÊÇ×î»ù±¾µÄÒªÇó¡£

ÄÇô¹¥»÷ÕßÔÚ magic_quotes_gpc = On ʱ£¬ËûÃÇÔõô¹¥»÷ÄØ£¿ºÜ¼òµ¥£¬¾ÍÊǶÔÊýÖµÐ͵Ä×ֶνøÐÐ SQL ×¢Èë¡£ÒÔÏÂÁÐµÄ php ½Å±¾ÎªÀý£º

< 
if (isset($_POST["f_login"])) {
  // Á¬½ÓÊý¾Ý¿â...
  // ...´úÂëÂÔ...
  // ¼ì²éÓû§ÊÇ·ñ´æÔÚ
  $t_strUid = $_POST["f_uid"];
  $t_strPwd = $_POST["f_pwd"];
  $t_strSQL = "SELECT * FROM tbl_users WHERE uid=$t_strUid AND password = '$t_strPwd' LIMIT 0,1";
  if ($t_hRes = mysql_query($t_strSQL)) {
    // ³É¹¦²éѯ֮ºóµÄ´¦Àí. ÂÔ...
  }
}
 >
test

User ID:
Password:
ÉÏÃæÕâ¶Î½Å±¾ÒªÇóÓû§ÊäÈë userid ºÍ password µÇÈë¡£Ò»¸öÕý³£µÄÓï¾ä£¬Óû§ÊäÈë 1001ºÍabc123£¬Ìá½»µÄ sql Óï¾äÈçÏ£º
SELECT * FROM tbl_users WHERE userid=1001 AND password = 'abc123' LIMIT 0,1

Èç¹û¹¥»÷ÕßÔÚ userid ´¦£¬ÊäÈ룺1001 OR 1 =1 #£¬Ôò×¢ÈëµÄsqlÓï¾äÈçÏ£º

SELECT * FROM tbl_users WHERE userid=1001 OR 1 =1 # AND password = 'abc123' LI
Ê×Ò³ ÉÏÒ»Ò³ 1 2 ÏÂÒ»Ò³ βҳ 1/2/2
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºÍ¼Æ¬ÉÏ´«µ½SQLServer ÏÂһƪ£ºÈ¥µôÏ»®Ïß²¢×ªÊ××ÖĸΪ´óд

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)