国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

ORACLE LATERAL-SQL-INJECTION 個人見解

2020-07-26 14:36:03
字體:
供稿:網(wǎng)友
如果直接執(zhí)行SQL語句或者參數(shù)綁定則不用擔(dān)心太多,
如以下ORACLE存儲過程
create or replace procedure kjdatepoc(date d)

as

begin

insert into kjdatetable values(d);

commit;

end;

根本不需要擔(dān)心遭受到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中的值達(dá)到SQL注射的目的,

老外的PAPER講解得非常詳細(xì)了 ,我在這里也不廢話。

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

看以下語句

ALTER SESSION SET NLS_NUMERIC_CHARACTERS=”'.';

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

輸出一下結(jié)果

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類型進(jìn)行替換了!我們可以進(jìn)行測試

begin

numinjpoc(1000,”' 主站蜘蛛池模板: 湘潭县| 铜梁县| 赣榆县| 天镇县| 轮台县| 安顺市| 阳曲县| 凤山市| 平湖市| 南阳市| 崇礼县| 遂昌县| 浦县| 黑水县| 屯昌县| 平乡县| 武定县| 桂东县| 绥芬河市| 昆山市| 江华| 广汉市| 洪泽县| 息烽县| 松原市| 水富县| 龙山县| 若尔盖县| 资溪县| 托里县| 霍州市| 福贡县| 曲靖市| 津市市| 蒙山县| 淮南市| 永丰县| 砚山县| 富宁县| 东乡县| 阿鲁科尔沁旗|