sql注入是web層面最高危的漏洞之一,在owasp漏洞排行中長期高居第一。近年來,隨著人們安全意識的普及,sql注入漏洞逐漸減少,同時也變得更加難以檢測和利用。
比如乙個在乙個登入窗體中,寫上 『 or 1=1 --+ 的payload,很有可能會契合後台的sql語句,成功找到注入點。
select count () from user where username=『admin』 and password =『password』 在這條sql語句中,admin 和password 都是通過登入窗體輸入的字元,但我們用萬能密碼探測時,會有這樣的情況
select count() from user where username = 』 'or 1=1 – 』 and password …
在這裡「–」的作用是注釋掉後面的sql語句,然後語句執行結果返回就是or 1=1, 結果為真,達到登入的效果。
原理:使用者輸入的資料被當作sql語句執行。
測試步驟
① select * from table where id = 8 』 報錯
②select * from table where id = 8 and 1=1 可以正常訪問
③select * from table where id = 8 and 1=2語句執行,但無法查詢資料,因為1=2始終為假
滿足這三個條件,程式就可能存在數字型sql注入
數字型與字元型最大的區別在於:數字型不需要閉合,而字元型一般需要閉合。
select * from table where username=『admin』 此時,我們可以構造payload 『and 1=1–+
此時的sql語句就會變成select * from table where username=『admin』
and 1=1 --+
所以,字元型的注入需要實現閉合條件,然後注釋掉多餘sql語句。
注:mysql的連線符號為空格,sql server的連線符號為「+」 oracle的連線符號位「||」
這些注入命名是根據其注入位置命名的、其實與前面的探測方法相同,只不過我們需要擷取資料報去修改實現注入。
sql語句學習第二彈
客戶端 提供給客戶使用對資料管理 資料儲存 資料檔案 資料磁碟 伺服器 資料庫管理系統 sql 結構化查詢語言 nosql 非結構化查詢語言 oracle現在用的多,mysql,sqlserver sqlserver 是微軟產品 不跨平台 所以使用相對少 單一原則 類 描述乙個事物 一種類名 函式 ...
PHP基礎知識總結 第二彈
1 什麼是陣列?php中的陣列更負責和靈活 陣列中每個元素由乙個特殊的識別符號區分,這個識別符號為鍵,鍵又稱下標,陣列中每乙個實體都有鍵和值 2 如何宣告陣列?相比js,求陣列長度的函式不再是用length而是用count 陣列變數名 a 直接為陣列元素賦值 arr 0 0 arr 1 1 arr ...
SQL入門 第二章總結 T SQL程式設計
一.批處理 批處理是包含乙個或多個sql語句的組,從應用程式一次性地傳送到sql server執行 sql server將批處理語句編譯成乙個可執行單元,此單元成為執行計畫。執行計畫中的語句每次執行一條。作用 提高sql server處理的執行效率 批處理語句 語句1語句2 go 二.變數 1.變數...