目錄
1. sql 注入
1.1 sql 注入 介紹
-
sql 注入在安全問題中排行榜首
-
SQL注入攻擊是輸入參數未經過濾,然後直接拼接到SQL語句當中解析,執行達到預想之外的一種行爲,稱之爲SQL注入攻擊。
1.2 sql 注入 原理
- 攻擊者在頁面提交惡意字符
- 服務器未對提交參數進行過濾或過濾不足
- 攻擊者利用拼接 sql 語句方式獲取數據庫敏感信息
1.3 sql 注入 危害
- 獲取 web 網站數據庫(數據泄露)
- 用戶數據被非法買賣
- 危害 web 應用安全
1.4 sql 注入 實現方式
-
手動
查找:注入點
輸入:sql 常用注入組合語法。進行注入 -
自動(工具)
工具:掃描注入點
輸入:自動嘗試各種組合語法
2. 環境搭建
2.1 vmware虛擬機軟件
作用:
- 一款虛擬機軟件。可以使用軟件在物理機上安裝多個虛擬機操作系統(Linux,windows)
- 靶機與滲透機運行依賴 VMware 軟件
下載
2.2 靶機(學習使用項目環境)
作用: 一個 Linux 虛擬機軟件,在這個虛擬機中安裝了一些已知漏洞的 web 應用程序,方便學習
下載:https://sourceforge.net/projects/owaspbwa/files/1.2/
安裝:無需安裝,直接 VM 運行
依賴 VMware 虛擬機軟件
啓動
連接mysql:mysql -uroot -powaspbwa
2.3 滲透機(學習攻擊 sql 注入環境)
滲透機-Kali
作用:Kali包含數百種工具,可用於各種信息安全任務,例如滲透測試,安全研究
下載:http://images.offensive-security.com/virtual-images/kali-linux-2018.2-vm-amd64.zip
安裝:依賴 VMware 軟件
雙擊運行即可
用戶名:root;密碼:toor
3. sql語句基本操作(mysql爲例)
3.1 基本 sql 庫操作語句
- 查看所有數據庫:show databases;
- 使用庫:use dvwa;
- 查看默認庫:select database();
- 查看所有表:show tables;
- 查看錶結構:desc 表;
- 查看創建表 sql 語句:show create table users\G
- 查看當前默認用戶:select user();
3.2 查詢語句
-- 查詢所有字段:
select * from users;
-- 查詢指定字段:
select user,password from users;
-- 條件查詢:
select * from users where user= "admin";
-- 邏輯與:
select * from users where user= "admin" and user_id=6;
-- 邏輯或:
select * from users where user= "admin" or user_id=6;
3.3 聯合查詢 union
說明:sql注入漏洞重點使用方式
作用:將兩條 sql 語句聯合起來查詢
語法:sql1 union sql2
注意:兩條 sql 語句查詢字段數必須相同
- 使用數字代替列,猜測前面表查詢列數
第一次猜:select * from dvwa.users union select 1;
第二次猜:select * from dvwa.users union select 1,2;
第三次猜:select * from dvwa.users union select 1,2,3;
猜錯了會報錯,沒報錯的就是 前面表查詢列數
3.4 特殊數據庫
1.特殊庫介紹
庫名:information_schema
作用:儲存 mysql 中所有庫民,表名,列名。是 mysql 數據的字典
應用:sql 注入經常從此庫中獲取需要的庫名,表名,字段名
關注:
tables表:記錄mysql庫中所有的表
columns表:記錄mysql庫中所有表和列
2.特殊庫操作:
- 查看錶:
select * from information_schema.TABLES\G;
select * from information_schema.COLUMNS\G;
- 關注字段:
TABLE_SCHEMA:數據庫名
TABLE_NAME:表名
COLUMNS_NAME:列名
- show databases 效果在特殊庫 TABLES 表中如何獲取?
select DISTINCT TABLE_SCHEMA from information_schema.TABLES;
- show tables 效果在特殊庫 TABLES 表中如何獲取?
select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA ='dvwa'
3.5 sql 註釋
#第一種單行註釋
-- 第二種單行註釋,這個後面必須有空格
/*這是多行註釋*/
3.6 concat 函數
作用:拼接多個字符串爲一個字符串,將多個列,寫到一個列數據中
語法:concat(str1,str2)
例子:
select user,password from users;
select concat(user,password) from users;
select concat(user," ",password) from users;
4. 注入流程
- 收集項目信息(操作系統,數據庫類型,web服務器類型)
- 查找注入點
- 注入sql語句
- 獲取數據庫信息
- 破解數據庫管理員賬號密碼
- 開始 sql-shell 等工具登錄並獲取數據
5. 自動注入
5.1 介紹
說明:自動注入是指利用工具代替人工取完成 sql 注入操作
工具:sqlmap
- 一個開源滲透測試工具
- 自動檢測和利用 sql 注入漏洞並接管數據庫服務器
搭建:
- 官網下載:http://sqlmap.org/
- 滲透機 Kali 自帶
5.2 官網下載 sqlmap
5.3 滲透機 Kali 自帶
登錄成功後
語法:
sqlmap --batch -u "你要測試的網站" --cookie="登錄信息,F12中查找"
有漏洞就會返回:數據庫版本,比如mysql 5.7,服務器版本,比如Apache 2.2
jdk1.8 和 PHP5.3.2 之類的
cookie:
數據庫:–current -db 獲取數據庫名,-D應用庫
表:–tables獲取,-T應用表
字段:–columns獲取,-C應用列
下載:–dump下載數據
Kali用的好,nao飯喫到老