算是系統(tǒng)的重新學(xué)一遍SQL了,把細(xì)節(jié)和運(yùn)用在熟悉一遍
注入原因: 缺少用戶輸入驗(yàn)證、數(shù)據(jù)和控制結(jié)構(gòu)混合在同一傳輸通道中
返回的錯(cuò)誤情況:1.錯(cuò)誤直接顯示在頁(yè)面上 ? ? ? ?2.將sql錯(cuò)誤隱藏在web源代碼中
? ? ?3.檢測(cè)到錯(cuò)誤時(shí)跳轉(zhuǎn)到另一個(gè)頁(yè)面 ? ?4.返回500或302 ? ?5.適當(dāng)處理錯(cuò)誤但返回一個(gè)通用的錯(cuò)誤頁(yè)面
四種數(shù)據(jù)庫(kù)的常見(jiàn)錯(cuò)誤和利用:
1.SqlServer
? ? 將id=1的1換成字符串的話,不加引號(hào)的字符串會(huì)被認(rèn)為是列名,從而返回找不到該列的錯(cuò)誤
? ? 還可以把字符串轉(zhuǎn)化為整數(shù)來(lái)產(chǎn)生錯(cuò)誤,.aspx?category=bikes' and 1=0/@@version;-- ? version作為一個(gè)除法會(huì)把它轉(zhuǎn)化為數(shù)字,但當(dāng)然轉(zhuǎn)化會(huì)失敗,失敗時(shí)會(huì)顯示出變量的內(nèi)容,version當(dāng)然也可以替換成別的。由此可以有一種注入,使用having和order by爆字段 ?舉例:bikes' having '1'='1 數(shù)據(jù)庫(kù)會(huì)要求group by和having一起使用并且返回當(dāng)前數(shù)據(jù)庫(kù)內(nèi)容的第一列。