一、內聯注釋
4、單行注釋,#后面直接加內容
多行注釋,/**/中間可以跨
二、注入語句
1.union聯合查詢:union操作符用於拼接兩個或者多個select查詢語句。
union中前后2個查詢必須擁有相同的列數。
2、order by 語句: 默認按照升序進行排列
3、常用的函數
函數/語句 | 功能 |
user() | 當前用戶名 |
database() | 當前所用數據庫 |
current_user() | 當前用戶名(可以用來查看權限) |
version() | 數據庫的版本 |
@@datadir | 數據庫的路徑 |
load_file() | 讀文件操作 |
into outfile()/into dumpfile | 寫文件操作 |
三、sql注入讀寫文件的根本條件:
1、數據庫允許導入導出(secure_file_priv):show variables like "secure_file_priv"; #secure_file_prive直接在my.ini文件里設置即可
2、當前用戶是否對文件具有讀寫權限(File_priv):查看當前用戶 select current_user();
查看當前用戶是否具有讀寫權限: select File_priv from mysql.user where user='root' and host='localhost';
四、字符串連接函數
1、concat(str1,str2..)直接連接
2、group_concat(str1,str2)使用逗號作為分隔符
3、concat_ws(sep,str1,str2)函數使用第一個參數作為分隔符
五、sql注入的本質
把用戶輸入的數據當做代碼執行
1、用戶能夠控制輸入;
2、原本程序要執行的代碼,拼接了用戶輸入的數據。
sql注入經常出現的地方:1、用戶一切可以輸入(可控)的地方
2、數據庫一切可能導入、導出的東西。
六、sql注入的分類
根據數據的傳輸方式:GET型 POST型 COOKie型
根據數據的類型:數字型、字符型
根據注入的模式:基於聯合查詢的注入模式
基於報錯的注入模式
基於布爾的盲注
基於時間的盲注
堆查詢的注入模式
七、sql注入的一般步驟
1、求閉合字符
2、選擇注入模式
3、爆數據庫
4、爆表名
5、爆列名
6、爆字段