SQL注入

2021-09-09 09:14:01 字數 1049 閱讀 4568

sql注入是一種很常見的攻擊方式,因為sql語句的特性,如果程式設計師在編寫邏輯時沒有考慮到資料庫安全,在輸入引數的過程中就有可能被注入有害的sql語句,從而達到攻擊資料庫的目的。

sql注入攻擊的總體思路:

1.尋找到sql注入的位置

2.判斷伺服器型別和後台資料庫型別

3.針對不同的伺服器和資料庫特點進行sql注入攻擊

sql攻擊的兩個例項:

1.頁面輸入查詢條件進行查詢

如果後台對輸入引數查詢的邏輯像下面這樣:

string pram = request.getparameter("parm");

string sql = " select * from user where name ='"+pram +"'";

//execute sql...

如果輸入的引數為:';drop database mydatabase ;select 'a

就有可能被刪掉整個資料庫,對於系統來說無疑是災難性的。

2.輸入使用者名稱和密碼進行登入驗證

前端頁面要求使用者輸入使用者名稱和密碼,如果後台邏輯如下:

string username = request.getparameter("username");

string password = request.getparameter("password");

string sql = " select * from user where username='"+username+"' and password = ' "+password+"'";

//execute sql...

如果輸入的兩個引數為:

username: ' or 1=1 --

password: aaa

那麼sql就變成:

select * from user where username ='' or 1=1 --' and password = 'aaa'
可以這樣輸入實現免帳號登入。

SQL注入(三) sql注入 bugku

原理 mysql 在使用 gbk 編碼的時候,會認為兩個字元為乙個漢字,例如 aa 5c 就是乙個 漢字 前乙個 ascii碼大於 128 才能到漢字的範圍 我們在過濾 的時候,往往利用的思 路是將 轉換為 換的函式或者思路會在每一關遇到的時候介紹 因此我們在此想辦法將 前面新增的 除掉,一般有兩種...

SQL注入 報錯注入

乙個帶get引數的 並且不從資料庫返回資料,但存在報錯資訊 檢視字段情況 報錯注入語句格式 and 1 2 union select1,2,3 from select count concat floor rand 0 2 sql語句 a from information schema.tables...

SQL注入 報錯注入

sql注入基礎 盲注 用於注入結果無回顯但錯誤資訊有輸出的情況 floor函式 返回小於等於某值的整數,例如floor 1 則返回1,floor 1.9 也返回1 rand函式 生成隨機數.可指定seed,指定後每次生成的數都一樣即偽隨機,不指定seed則每次生成的隨機數都不一樣.通過floor和r...