詳解sql注入通過(guò)函數(shù)判斷數(shù)據(jù)庫(kù)類型
某些SQL函數(shù)可以判斷數(shù)據(jù)庫(kù)類型,下面就將為您介紹sql注入通過(guò)函數(shù)判斷數(shù)據(jù)庫(kù)類型,供您參考,希望對(duì)您更深入了解SQL函數(shù)有所幫助
某日,發(fā)現(xiàn)一目標(biāo)存在SQL注入,且過(guò)濾了select等相關(guān)敏感字段,用工具暫無(wú)法判斷數(shù)據(jù)庫(kù)類型。
后發(fā)現(xiàn)調(diào)用某些SQL函數(shù)也可判斷數(shù)據(jù)庫(kù)類型,雖然SQL語(yǔ)句大部分是通用的。但一些內(nèi)置的函數(shù)還是有一定的區(qū)別。
len和length
在mssql和mysql以及db2內(nèi),返回長(zhǎng)度值是調(diào)用len()函數(shù);在oracle和INFORMIX則是通過(guò)length()來(lái)返回長(zhǎng)度值。
換句話說(shuō)。
當(dāng)你使用and len('a')=1的時(shí)候,返回正常頁(yè)面時(shí),可以推斷當(dāng)前的數(shù)據(jù)庫(kù)類型可能是mssql,或mysql,或是db2。反之則可能會(huì)是oracle和informix。
@@version和version()
在mysql內(nèi),可以用@@version或是version()來(lái)返回當(dāng)前的版本信息。但無(wú)法判斷是mysql還是mssql時(shí),可以用version()函數(shù)來(lái)構(gòu)造判斷。
換句話說(shuō):
version()>1 返回與@@version>1 相同頁(yè)面時(shí),則可能是mysql。如果出現(xiàn)提示version()錯(cuò)誤時(shí),則可能是mssql。
substring和substr
在mssql中可以調(diào)用substring。oracle則只可調(diào)用substr
【編輯推薦】