首頁 >資料庫 >SQL >SQL注入攻擊的原理

SQL注入攻擊的原理

angryTom
angryTom原創
2020-02-13 17:13:3316430瀏覽

SQL注入攻擊的原理

sql注入攻擊的原則

惡意使用者在提交查詢請求的過程中將SQL語句插入到請求內容中,同時程式本身對使用者輸入內容過度信任而未對惡意使用者插入的SQL語句進行過濾,導致SQL語句直接被服務端執行。

SQL注入攻擊分類

(1)注入點的不同分類

數字型別的注入字串型別的注入

#(2)提交方式的不同分類

GET注入POST注入COOKIE注入HTTP注入

#(3)獲取資訊的方式不同分類

#基於布林的盲注基於時間的盲注是基於報錯的注入

SQL注入攻擊案例:

1、查看文章的注入案例:

查看某篇文章的url參數為:?id=1

則透過注入指令:?id=1 or 1=1,則可以列出整個資料表裡面的所有文章。

如果查看使用者是透過user_id來訪問,如:? uid=1

則透過注入指令:?id=1 or 1=1, 則可以把整個使用者表的記錄全部顯示出來

SQL指令如下:

透過?id=1的SQL指令為:select * from article where id=1,此語句查詢到1條結構

透過?id=1 and 1=1的SQL指令為:select * from article where id=1 or 1=1,此語句查詢到整個表格的記錄

2、使用者登入的注入案例:

登入表單有user_name字段,查詢語句為: select * from users where nickname='{user_name}'

則可以在user_name文字方塊填入:(' or 1='1),這樣可以建構出注入的SQL指令:select * from users where user_name='' 或 1='1',這樣很容易就進入系統了。

3、SQL注入猜表:

在登入頁面的使用者名字段填入:(' or 1=(select count(0) from t_porg_document) or 1='1),可以建構出注入的SQL指令:select * from users where user_name='' or 1=(select count(0) from recharge) or 1='1'

這樣就可以猜測是否recharge表存在.存在則語句正常執行,否則就報錯了。

猜中表名後,就可以對資料表進行增刪改查的操作,如:

在登入頁面的使用者名字段填入:('; delete from users),可以建構出危險的SQL指令:select * from users where user_name=''; delete from users;

透過加分號,可以建構出任意增刪改查sql語句,整個資料庫就被攻擊者隨意控制了。

PHP中文網,有大量免費的SQL教學,歡迎大家學習!

以上是SQL注入攻擊的原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn