ITPub博客

首页 > 数据库 > Oracle > 反恐精英之动态SQL和SQL注入-SQL注入-SQL注入技术-语句修改

反恐精英之动态SQL和SQL注入-SQL注入-SQL注入技术-语句修改

原创 Oracle 作者:luisedalian 时间:2014-02-16 08:31:30 0 删除 编辑

SQL注入技术

SQL注入技术只利用了一个缺陷:输入的字符串没有进行有效的验证,并且被连接到动态SQL语句中。

语句修改

语句修改意味着故意修改动态SQL语句,这样语句就可以以一种开发者非计划中的方式运行。

通常会通过修改where子句、select子句、插入union all子句来获得未授权的数据。

典型例子是通过使where子句始终为真为越过口令验证。            

-- 11g12_07_09.prc 创建一个容易受语句修改攻击的存储过程

CREATE OR REPLACE PROCEDURE get_record (user_name IN VARCHAR2, service_type IN VARCHAR2, rec OUT VARCHAR2)

IS

    query VARCHAR2(4000);

BEGIN

  -- 下面的语句容易受SQL修改的攻击,因为它使用连接来建立where子句

    query := 'SELECT value FROM secret_records WHERE user_name='''

            || user_name

            || ''' AND service_type='''

            || service_type

            || '''';

    DBMS_OUTPUT.PUT_LINE('查询: ' || query);

    EXECUTE IMMEDIATE query INTO rec ;

    DBMS_OUTPUT.PUT_LINE('记录: ' || rec );

END;

-- 11g12_07_09.tst

DECLARE   

    record_value VARCHAR2(4000);   

BEGIN

    -- 没用使用SQL注入

    get_record('Andy', 'Waiter', record_value);   

    -- 使用SQL注入

    get_record('Anybody '' OR service_type=''Merger''--', 'Anything', record_value);

   

END;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1082016/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5641727