你能夠由於現任很差而分手,但千萬不要認爲別人更好,永遠有人更好,眼下即是更好。。。前端
---- 網易雲熱評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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。