反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-資料型別轉換
使用NLS會話引數來修改或注入SQL語句。
一個日期或數值連線到動態SQL語句文字中的時候一定會被轉換成為VARCHAR2資料型別。這個轉換可能是隱式的或顯式的。資料型別轉換依賴於資料庫會話引數NLS_,
日期轉換格式化模板依賴於NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT或NLS_TIMESTAMP_TZ_FORMAT,
具體依賴於哪一種取決於日期資料型別。數值的轉換依賴於引數NLS_NUMERIC_CHARACTERS。
例如:日期的轉換模型是”text”,則text會被複制到轉換結果中。
NLS_DATE_FORMAT = '"Month:" Month',則6月時,to_char的轉換結果為’Month: June’
--插入之前刪除的資料 hr@TESTDB11>INSERT INTO secret_records VALUES ('Chuck', 'Merger', 'Buy company XYZ', SYSDATE); --確定資料 hr@TESTDB11>select * from secret_records;
USER_NAME SERVICE_TYPE VALUE DATE_CREA --------- ------------ ------------------------------ --------- Andy Waiter Serve dinner at Cafe Pete 15-FEB-14 Chuck Merger Buy company XYZ 15-FEB-14
-- 11g12_07_11.prc CREATE OR REPLACE PROCEDURE get_recent_record (user_name IN VARCHAR2, service_type IN VARCHAR2, rec OUT VARCHAR2) IS query VARCHAR2(4000); BEGIN --檢視傳遞進來的引數 DBMS_OUTPUT.PUT_LINE('parameter user_name: ' || user_name); DBMS_OUTPUT.PUT_LINE('parameter service_type: ' || service_type);
--下面的語句容易受修改的攻擊,因為where子句是使用連線來構造的,並且sysdate依賴於NLS_DATE_FORMAT引數的值 query := 'SELECT value FROM secret_records WHERE user_name=''' || user_name || ''' AND service_type=''' || service_type || ''' AND date_created>''' || (SYSDATE - 30) || '''';
DBMS_OUTPUT.PUT_LINE('查詢: ' || query); EXECUTE IMMEDIATE query INTO rec; DBMS_OUTPUT.PUT_LINE('結果: ' || rec); END; -- 11g12_07_11.tst DECLARE record_value VARCHAR2(4000); BEGIN --沒有SQL注入 --get_recent_record('Andy', 'Waiter', record_value); --帶SQL注入,先要修改會話引數設定 --ALTER SESSION SET NLS_DATE_FORMAT='"'' OR service_type=''Merger"'; --檢視修改後的NLS_DATE_FORMAT引數的設定 -- select * from nls_session_parameters where parameter = 'NLS_DATE_FORMAT'; get_recent_record('Andy', 'Anything', record_value); END;
|
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1082020/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句注入SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-SQL隱碼攻擊技術-語句修改SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-驗證檢查SQL
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-繫結變數SQL變數
- 反恐精英之動態SQL和SQL隱碼攻擊-SQL隱碼攻擊-防衛SQL隱碼攻擊-顯式格式化模型SQL模型
- SQL隱碼攻擊SQL
- PLSQL Language Referenc-PL/SQL動態SQL-SQL隱碼攻擊-SQL隱碼攻擊技術-語句修改SQL
- 【SQL Server】--SQL隱碼攻擊SQLServer
- MYSQL SQL隱碼攻擊MySql
- 【SQL隱碼攻擊原理】SQL
- 防止SQL隱碼攻擊SQL
- SQL隱碼攻擊(一)SQL
- 駭客攻擊技術之高階SQL隱碼攻擊技術(轉)SQL
- SQL隱碼攻擊原理是什麼?如何防範SQL隱碼攻擊?SQL
- SQL隱碼攻擊語句SQL
- pikachu-SQL隱碼攻擊SQL
- SQL隱碼攻擊導圖SQL
- SQL隱碼攻擊問題SQL
- SQL隱碼攻擊的例子SQL
- ZMLCMS-SQL隱碼攻擊SQL
- SQL隱碼攻擊演練SQL
- 預防SQL隱碼攻擊SQL
- SQL隱碼攻擊式攻擊掃描器SQL
- DVWA-SQL Injection(SQL隱碼攻擊)SQL
- 【網路安全】什麼是SQL隱碼攻擊漏洞?SQL隱碼攻擊的特點!SQL
- 攻擊JavaWeb應用[3]-SQL隱碼攻擊[1]JavaWebSQL
- 攻擊JavaWeb應用[4]-SQL隱碼攻擊[2]JavaWebSQL
- WAF攻防之SQL隱碼攻擊篇SQL
- SQL隱碼攻擊關聯分析SQL
- SQL隱碼攻擊-堆疊注入SQL
- XSS與SQL隱碼攻擊SQL
- SQL隱碼攻擊基礎原理SQL
- Mybatis如何防止SQL隱碼攻擊MyBatisSQL
- MSSQL SQL隱碼攻擊 總結SQL
- Oracle SQL隱碼攻擊 總結OracleSQL
- SQL隱碼攻擊詳解-1SQL
- 史上最牛SQL隱碼攻擊SQL