關於sql注入(詳解)

2021-10-12 02:24:58 字數 953 閱讀 7248

sql注入是比較常見的網路攻擊方式之一,它不是利用作業系統的bug來實現攻擊,而是針對程式設計師程式設計時的疏忽,通過sql語句,實現無帳號登入,甚至篡改資料庫。

償試所有可以輸入的地方,償試注入攻擊。 根據返回的報錯結果,判斷後台服務的型別及資料庫的型別。 確認後台服務及資料庫型別後,改進攻擊方案,進行有針對性的攻擊。

要進入乙個系統,當然最離不開的就是登入介面,所以我們就來看看如何免密碼登入系統。

登入介面要求兩個輸入項:使用者名稱、密碼。

我們可以這樣實現免賬號登入:使用者名稱輸入「』 or 1=1 --」, 密碼輸入隨意字元。

那麼現在來分析一下,為什麼可以免賬號登入。

後台驗證一般是類似的sql:

string sql = 「select * from tuser where user_name=』 「+user_name+」 』 and user_pass=』 「+user_pass+」 '」;

拼上我們輸入的引數後,語句變成了:

select * from tuser where user_name=』 』 or 1=1 --『and user_pass=』』

後面的"–『and user_pass=』』" 相當於是注釋**,不生效。實際執行的sql為:

select * from tuser where user_name=』 』 or 1=1

這樣一定要查出使用者資料,很可能後面的邏輯處理就當作使用者登入成功處理了,然後實現了免密碼登入。

如果希望進一步加強危害,可以實現任意語句執行,例如:使用者名稱傳入「』; drop table tuser; --」; 實際執行的sql變成了:

select * from tuser where user_name=』』 ; drop table tuser; --』 and password=』』

這樣你的表就沒了~

推薦方案

採用 佔位符 方式進行sql傳參,禁止將入參直接拼接到sql中 。

sql注入詳解

我們先了解web 程式三層架構 三層架構 3 tier architecture 通常意義上就是將整個業務應用劃分為 介面層 user inte ce layer 業務邏輯層 business logic layer 資料訪問層 data access layer 區分層次的目的即為了 高內聚低耦合...

SQL注入詳解

sql 注入 sqli 是一種注入攻擊,可以執行惡意 sql 語句。它通過將任意 sql 插入資料庫查詢,使攻擊者能夠完全控制 web 應用程式後面的資料庫伺服器。攻擊者可以使用 sql 注入漏洞繞過應用程式安全措施 可以繞過網頁或 web 應用程式的身份驗證和授權,並檢索整個 sql 資料庫的內容...

sql注入詳解

什麼是sql注入?sql注入 sqli 是一種注入攻擊,可以執行惡意sql語句。它通過將任意sql 插入資料庫查詢,使攻擊者能夠完全控制web應用程式後面的資料庫伺服器。攻擊者可以使用sql注入漏洞繞過應用程式安全措施 可以繞過網頁或web應用程式的身份驗證和授權,並檢索整個sql資料庫的內容 還可...