sql注入是**存在最多也是最簡單的漏洞,主要原因是程式設計師在開發使用者和資料庫互動的系統時沒有對使用者輸入的字串進行過濾,轉義,限制或處理不嚴謹,導致使用者可以通過輸入精心構造的字串去非法獲取到資料庫中的資料。本文以免費開源資料庫mysql為例,看懂本文需要了解基本sql語句。
1.引數是使用者可控的
2.引數被帶入資料庫中進行查詢
1.資料庫資訊洩露
2.獲取webshell
3.網頁篡改
4.**掛馬
5.獲取系統許可權
6.萬能密碼
7.檔案讀取
等當傳入的引數為 1』 時,資料庫會執行以下**,並會報錯,因為這是不符合資料庫語法規範的:
select * from users where id=1』
當傳入的引數為and 1=1 時,不會報錯,因為1=1為真,所以返回的頁面是正常的;當傳入的引數為and 1=2時,因為條件為假,所以會返回乙個不同的結果:
select * from users where id=1 and 1=1 #條件為真,頁面正常無變化
select * from users where id=1 and 1=2 #條件為假,頁面異常或變化
按資料庫型別:
access、mssql、mysql、oracle、db2等
按提交方式:
get、post、cookie、http頭、xff
按注入點型別:
數字型、字元型、搜尋型
按執行效果:
布林盲注、時間盲注、報錯注入、聯合注入、堆疊查詢注入
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...