反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句注入

LuiseDalian發表於2014-02-16

語句注入是使用者為SQL語句附加一條或多條SQL語句。匿名PL/SQL塊容易受到這種技術的攻擊。

CREATE OR REPLACE PROCEDURE p (user_name IN VARCHAR2, service_type IN  VARCHAR2)

IS

    block1 VARCHAR2(4000);

BEGIN

    -- 下面的塊容易受到語句注入攻擊,因為它是使用連線來構造的。

    -- 檢視傳遞進來的引數

    DBMS_OUTPUT.PUT_LINE(' username: ' || user_name);

    DBMS_OUTPUT.PUT_LINE(' servicetype: ' || service_type);

    block1 :=

        'BEGIN

            DBMS_OUTPUT.PUT_LINE(''user_name: ' || user_name || ''');'

            || 'DBMS_OUTPUT.PUT_LINE(''service_type: ' || service_type || ''');

        END;';

    DBMS_OUTPUT.PUT_LINE('Block1: ' || block1); 

    EXECUTE IMMEDIATE block1;

END;

-- 11g12_07_10.tst

BEGIN

    --1次執行,沒有SQL注入

    p('Andy', 'Waiter');

    --2次執行,語句注入

    --p('Anybody', 'Anything'');

--DELETE FROM secret_records WHERE service_type=INITCAP(''Merger');

--COMMIT;

END;

--檢視資料已經被惡意刪除了

hr@TESTDB11>select * from secret_records;

USER_NAME SERVICE_TYPE VALUE                          DATE_CREA

--------- ------------ ------------------------------ ---------

Andy      Waiter       Serve dinner at Cafe Pete      15-FEB-14

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1082018/,如需轉載,請註明出處,否則將追究法律責任。

相關文章