SQL注入基礎相關概念

你能夠由於現任很差而分手,但千萬不要認爲別人更好,永遠有人更好,眼下即是更好。。。前端

----  網易雲熱評web


1、什麼是SQL注入數據庫

SQL注入是指Web應用程序對用戶輸入的數據的合法性沒有判斷,前端傳入後端的參數是攻擊者可控的,而且參數帶入數據庫查詢,那麼攻擊者能夠經過構造不一樣的SQL語句來實現對數據庫的任意操做。後端

開發人員可使用動態SQL語句建立通用、靈活的應用。動態SQL語句是在執行過程當中構造的,它根據不一樣的條件產生不一樣的SQL語句。(不一樣字段和不一樣條件)安全

這裏的參數user_id是可控的,且帶入數據庫查詢,因此用戶能夠任意拼接SQL語句進行攻擊。微信


2、 SQL注入的原理網絡

1. 參數用戶可控函數

2. 參數帶入數據庫查詢工具


3、判斷是否存在SQL注入web安全

一、單引號判斷法,正常輸出

二、在1後面輸入單引號提交,報錯,存在SQL注入漏洞

緣由:不管字符型仍是整型都會由於單引號個數不匹配而報錯!


4、 SQL注入漏洞的兩種類型

1. 數字型

2. 字符型

若是是數字型,1=2確定會報錯,因爲沒有報錯,說明該注入類型是字符型


5、構造閉合語句

根據報錯內容,知道多了一個單引號

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1''' at line 1

一、構造語句:1' and '1'='1

最後一個1少輸入一個單引號,正好和原來的閉合

二、構造語句:1' and 1=1#

#符號能夠最後的引號屏蔽掉

三、構造語句:1' and 1=1-- 

"-- ",後面是有一個空格的,一樣也能夠屏蔽後面的語句

--+

%23


6、MySQL注入相關的知識點:

MySQL 5.0以後,MySQL默認在數據庫中存放一個「information_schema」的數據庫,該庫中存放着這三張表:

1. SCHEMATA:存儲該用戶建立的全部數據庫的庫名,記錄庫名的字段爲

SCHEMATA_NAME。

2. TABLES:存儲該用戶建立的全部數據庫的庫名和表名,記錄庫名的字段爲

TABLE_SCHEMA,記錄表名的字段爲TABLE_NAME。

3. COLUMNS:存儲該用戶建立的全部數據庫的庫名、表名、字段名。記錄庫名

的字段爲TABLE_SCHEMA,記錄表名的字段爲TABLE_NAME,記錄字段名的字

段爲COLUMN_NAME。

limit:

limit m,n

m:記錄開始的位置,0表明第一條記錄

n:取n條記錄

limit 0,2:第一條記錄開始,取兩條記錄!

經常使用的函數和屬性:

version():查詢MySQL的版本

database():查詢數據庫名

user():查詢使用MySQL的用戶

@@datadir:查詢數據庫物理路徑

@@version:查詢MySQL的版本


7、MySQL的4種註釋:

1. # 我是註釋2. -- 我是註釋 (--和我是註釋之間有空格)

3. /*我是註釋*/

以上註釋均可以放在SQL語句的任意位置中!!!

4. /*!code*/ (內聯註釋)

內聯註釋能夠用於整個SQL語句中,用來執行SQL語句!

例如:userid=1/*! UNION*//*! SELELCT*/1,2,3,4

文章來源於網絡,若有侵權,請聯繫刪除


禁止非法,後果自負

歡迎關注公衆號:web安全工具庫

本文分享自微信公衆號 - web安全工具庫(websec-tools)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索