SQL ע��

�ܶ� web ������û��ע�⵽ SQL ��ѯ�ǿ��Ա��۸ĵģ������ SQL ��ѯ���������ε�����ⲻ֪����SQL ��ѯ�����ƿ����ʿ��ƣ��Ӷ��ƹ������֤��Ȩ�޼�顣�������ߣ��п���ͨ�� SQL ��ѯȥ������������ϵͳ�������

ֱ�� SQL ����ע����ǹ����߳��õ�һ�ִ������޸����� SQL ���ļ������Ӷ��ﵽȡ���������ݣ��򸲸ǹؼ���ֵ������ִ�����ݿ���������ϵͳ�����Ŀ�ġ�����ͨ��Ӧ�ó���ȡ���û����벢�뾲̬������ϳ� SQL ��ѯ��ʵ�ֵġ����潫�����һЩ��ʵ�����ӡ�

������ȱ������������ݽ�����֤������ʹ���˳����û���������Ȩ�������û������ݿ��ʺ������ӣ������߿��������ݿ����½�һ�������û���

Example #1 һ��ʵ�����ݷ�ҳ��ʾ�Ĵ���......Ҳ���Ա���������һ�������û���PostgreSQLϵͳ����

<?php

$offset 
$argv[0]; // ע�⣬û��������֤��
$query  "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
$result pg_query($conn$query);

?>
һ����û����� $offset �ѱ���ֵ��"��һҳ"��"��һҳ"�����ӡ�ԭ������ֻ����Ϊ $offset ��һ����ֵ��Ȼ����������˳��԰���������Ⱦ��� urlencode() ����Ȼ�����URL�еĻ���
0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--
��ô���Ϳ��Դ���һ�������û��ˡ�ע���Ǹ� 0; ֻ������Ϊ���ṩһ����ȷ��ƫ�����Ա㲹������ԭ���IJ�ѯ��ʹ����Ҫ������ѡ�

Note:

-- �� SQL ��ע�ͱ�ǣ�һ�����ʹ���������� SQL ���������Ժ������䡣

����ʾ���������ҳ��������һ���ܵõ�����Ŀ��а취����������Ҫ����ֻ�������ҳ���Щ�ύ��ȥ�ı��������� SQL ��䲢�Ҵ������ġ�������ı���ͨ���������� SELECT ��ѯ�е�������䣬�� WHERE, ORDER BY, LIMIT �� OFFSET��������ݿ�֧�� UNION ����Ļ��������߻����ܻ��һ�������� SQL ��ѯ���ӵ�ԭ����������Ա���������ݱ��еõ����롣��ˣ��������ֶμ����Ǻ���Ҫ�ġ�

Example #2 ��ʾ����......�Լ�һЩ���루�κ����ݿ�ϵͳ��

<?php

$query  
"SELECT id, name, inserted, size FROM products
                  WHERE size = '
$size'
                  ORDER BY 
$order LIMIT $limit$offset;";
$result odbc_exec($conn$query);

?>
������ԭ���IJ�ѯ�Ļ����������һ�� SELECT ��ѯ��������룺
'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--
����������䣨ʹ�� ' �� --�������뵽 $query �е�����һ�������Ļ�����ô���鷳�ˡ�

SQL �е� UPDATE Ҳ���ܵ����������ֲ�ѯҲ�������������������������򸽼�����һ�����������󡣵��ǹ����߸�Ը��� SET �Ӿ����֣��������ǾͿ��Ը������ݱ��е�һЩ���ݡ���������±���Ҫ֪�����ݿ�Ľṹ�����޸IJ�ѯ�ɹ����С�����ͨ�����ϵı��������ֶν��в²⣬���߽��б����ƽ⡣���ڴ���û�����������ֶΣ������ķ��������ࡣ

Example #3 ����������......����ø���Ȩ�ޣ��κ����ݿ�ϵͳ��

<?php
$query 
"UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';";
?>
���Ƕ�����û���� ' or uid like'%admin%'; -- ��Ϊ������ֵ�ύ�� $uid ���ı� admin �����룬���߰� $pwd ��ֵ�ύΪ "hehehe', admin='yes', trusted=100 "�������и��ո�ȥ��ø����Ȩ�ޡ��������Ļ�����ѯ���ʵ���Ͼͱ���ˣ�
<?php

// $uid == ' or uid like'%admin%'; --
$query "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";

// $pwd == "hehehe', admin='yes', trusted=100 "
$query "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE
...;"
;

?>

����������µ����ӽ�����ʾ�����ijЩ���ݿ���ִ��ϵͳ���

Example #4 �������ݿ����������IJ���ϵͳ��MSSQL Server��

<?php

$query  
"SELECT * FROM products WHERE id LIKE '%$prod%'";
$result mssql_query($query);

?>
��������ύ a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- ��Ϊ���� $prod��ֵ����ô $query ������
<?php

$query  
"SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--"
;
$result mssql_query($query);

?>
MSSQL ��������ִ������ SQL ��䣬�����������Ǹ�������ϵͳ����û�������������������� sa ���ж� MSSQLSERVER ���������㹻��Ȩ�޵Ļ��������߾Ϳ��Ի��һ��ϵͳ�ʺ������������ˡ�

Note:

��Ȼ���ϵ����������ijһ�ض������ݿ�ϵͳ�ģ������Ⲣ�������ܶ��������ݿ�ϵͳʵʩ���ƵĹ�����ʹ�ò�ͬ�ķ������������ݿⶼ�п������ꡣ

Ԥ����ʩ

Ҳ�����˻����Ұ�ο��˵������Ҫ֪�����ݿ�ṹ����Ϣ����ʵʩ����Ĺ�����û��ȷʵ��ˡ���û���ܱ�֤������һ���ò�����Щ��Ϣ��һ�����ǵõ��ˣ����ݿ���й¶��Σ�ա���������ÿ���Դ�������������������ݿ⣬������̳���򣬹����߾ͺ��ݵõ�����صĴ��롣�����Щ������Ʋ����Ļ������վ͸����ˡ�

��Щ�������ǽ����ڷ���ȫ��ʶ��ǿ�Ĵ����ϵġ����ԣ���Զ��Ҫ���������������ݣ��ر��������ڿͻ��˵ģ�����ѡ��򡢱�������� cookie����������ĵ�һ�����������������������IJ�ѯҲ�п���������ѡ�

  • ��Զ��Ҫʹ�ó����û����������ʺ�ȥ�������ݿ⡣Ҫ��Ȩ�ޱ��ϸ����Ƶ��ʺš�
  • �������������Ƿ���������������ݸ�ʽ��PHP �кܶ�������ڼ������ĺ������Ӽ򵥵������������ַ����ͺ��������� is_numeric()��ctype_digit()�������ӵ� Perl ����������ʽ����������������������
  • �������ȴ�����һ�����֣����Կ���ʹ�� is_numeric() ����飬����ֱ��ʹ�� settype() ��ת���������ͣ�Ҳ������ sprintf() ������ʽ��Ϊ���֡�

    Example #5 һ��ʵ�ַ�ҳ����ȫ�ķ���

    <?php

    settype
    ($offset'integer');
    $query "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";

    // ��ע���ʽ�ַ����е� %d������� %s �ͺ���������
    $query sprintf("SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;",
                     
    $offset);

    ?>

  • ʹ�����ݿ��ض��������ַ�ת�庯�������� mysql_escape_string() �� sql_escape_string()�����û��ύ�����ķ��������ݽ���ת�塣������ݿ�û��ר�ŵ������ַ�ת�幦�ܵĻ� addslashes() �� str_replace() ���Դ���������������������һ��������������ʾ���ڲ�ѯ�ľ�̬���ּ��������Dz����ģ���ѯ�����ױ����ơ�
  • Ҫ�����ֶα�����ʾ���κ��й����ݿ�����ģ����������ݿ�ṹ���μ����󱨸�������������
  • Ҳ����ѡ��ʹ�����ݿ�Ĵ洢���̺�Ԥ����ָ�������������������ʣ�ʹ�û�����ֱ�ӷ������ݱ����ͼ��������취���б��Ӱ�졣

����֮�⣬�����������£�ʹ�ô�������ݿ�ϵͳ�����ѯ��־Ҳ��һ���ð취����Ȼ����־�����ܷ�ֹ�κι����������������Ը��ٵ��ĸ��������������Թ���������־����û�ã�Ҫ�������а�������Ϣ���С��Ͼ����������Ϣ�ܱ�û��Ҫ�á�