掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
某些SQL函數可以判斷數據庫類型,下面就將為您介紹sql注入通過函數判斷數據庫類型,供您參考,希望對您更深入了解SQL函數有所幫助

創(chuàng)新互聯從2013年開始,是專業(yè)互聯網技術服務公司,擁有項目成都網站建設、網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元鞍山做網站,已為上家服務,為鞍山各地企業(yè)和個人服務,聯系電話:028-86922220
某日,發(fā)現一目標存在SQL注入,且過濾了select等相關敏感字段,用工具暫無法判斷數據庫類型。
后發(fā)現調用某些SQL函數也可判斷數據庫類型,雖然SQL語句大部分是通用的。但一些內置的函數還是有一定的區(qū)別。
len和length
在mssql和mysql以及db2內,返回長度值是調用len()函數;在oracle和INFORMIX則是通過length()來返回長度值。
換句話說。
當你使用and len('a')=1的時候,返回正常頁面時,可以推斷當前的數據庫類型可能是mssql,或mysql,或是db2。反之則可能會是oracle和informix。
@@version和version()
在mysql內,可以用@@version或是version()來返回當前的版本信息。但無法判斷是mysql還是mssql時,可以用version()函數來構造判斷。
換句話說:
version()>1 返回與@@version>1 相同頁面時,則可能是mysql。如果出現提示version()錯誤時,則可能是mssql。
substring和substr
在mssql中可以調用substring。oracle則只可調用substr

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流