【安全滲透】sql注入

1. sql 注入

1.1 sql 注入 介紹

  1. sql 注入在安全問題中排行榜首

  2. SQL注入攻擊是輸入參數未經過濾,然後直接拼接到SQL語句當中解析,執行達到預想之外的一種行爲,稱之爲SQL注入攻擊。

1.2 sql 注入 原理

  1. 攻擊者在頁面提交惡意字符
  2. 服務器未對提交參數進行過濾或過濾不足
  3. 攻擊者利用拼接 sql 語句方式獲取數據庫敏感信息

1.3 sql 注入 危害

  1. 獲取 web 網站數據庫(數據泄露)
  2. 用戶數據被非法買賣
  3. 危害 web 應用安全

1.4 sql 注入 實現方式

  1. 手動
    查找:注入點
    輸入:sql 常用注入組合語法。進行注入

  2. 自動(工具)
    工具:掃描注入點
    輸入:自動嘗試各種組合語法

2. 環境搭建

2.1 vmware虛擬機軟件

作用:

  1. 一款虛擬機軟件。可以使用軟件在物理機上安裝多個虛擬機操作系統(Linux,windows)
  2. 靶機與滲透機運行依賴 VMware 軟件

下載

  1. 官網:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
  2. 百度,谷歌自行搜索

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 庫操作語句

  1. 查看所有數據庫:show databases;
  2. 使用庫:use dvwa;
  3. 查看默認庫:select database();
  4. 查看所有表:show tables;
  5. 查看錶結構:desc 表;
  6. 查看創建表 sql 語句:show create table users\G
  7. 查看當前默認用戶: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 語句查詢字段數必須相同

  1. 使用數字代替列,猜測前面表查詢列數
第一次猜: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.特殊庫操作:

  1. 查看錶:
select * from information_schema.TABLES\G;
select * from information_schema.COLUMNS\G;
  1. 關注字段:
TABLE_SCHEMA:數據庫名
TABLE_NAME:表名
COLUMNS_NAME:列名
  1. show databases 效果在特殊庫 TABLES 表中如何獲取?
select DISTINCT TABLE_SCHEMA from information_schema.TABLES;
  1. 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. 注入流程

  1. 收集項目信息(操作系統,數據庫類型,web服務器類型)
  2. 查找注入點
  3. 注入sql語句
  4. 獲取數據庫信息
  5. 破解數據庫管理員賬號密碼
  6. 開始 sql-shell 等工具登錄並獲取數據

5. 自動注入

5.1 介紹

說明:自動注入是指利用工具代替人工取完成 sql 注入操作
工具:sqlmap

  • 一個開源滲透測試工具
  • 自動檢測和利用 sql 注入漏洞並接管數據庫服務器

搭建:

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飯喫到老

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章