语句注入是用户为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博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1082018/ ,如需转载,请注明出处,否则将追究法律责任。