標籤:

Sqli labs系列-less-5&6 報錯注入法(上)

睡了一下午,晚上也沒啥事,還特別精神,就想著,要不繼續做做這個系列第五關和第六關吧,在我一系列常規的測試後發現,第五關和第六關,是屬於報錯注入的關卡,兩關的區別是一個是單引號一個是雙引號。。。當然我是看了源碼的。。。。

基於報錯注入的方法,我早就忘的差不多了,,,我記的我最後一次基於報錯注入是在玩網路攻防平台第幾關來著得,那個關卡時基於報錯注入的,我當時還特地查了好多資料,學習了學習報錯注入,當然在那段時間時,我看到我一個認為不錯的團隊開始收核心成員了,我就發了一份申請,果不其然,我被刷下來了,,,畢竟我還是菜么。。。。。

當時申請的時候,我就想過,團隊不養閑人,畢竟菜,所以菜,我還是繼續努力的學吧,雖說是抱著興趣愛好的玩這個的,萬一,我畢業了找工作,有這個機會,我是不是也能找到這個工作了?興趣變成工作?

好了,話歸正題,關於這關需要用到報錯注入,而我早就忘的差不多了,,,那咋辦了?回想了回想,我一開始玩SQL注入時,我看過習科的SQL手工注入的書,我還看過小迪的SQL注入,當然,,,人家的沒教這個報錯注入。。。。。還有cracer的我也看過,也沒教報錯的。。。。

我了個擦,想了好長時間,我還是直接找這個關的答案吧。。。。

搜了好長時間,我突然想開,我好像在某個平台上看過人家有關於這個SQL注入源碼平台一系列教程,我趕緊去看了,,,,話說我的這個SQL報錯分析,還是在那個平台學會的。。。

我把這個關的呢個教程看了兩遍,人家很詳細的介紹了報錯注入原理,我就按著人家說的,我再總結一編,誰讓這是我的專欄,開這個專欄不就是整理匯總知識?來學習的啊?再整理一遍,我就更加深刻的理解了。

不閑話了,正式開始,我先捋一遍報錯的原理,然後再打這第五關和第六關。

首先我先把需要報錯用到的SQL函數先列開。

打開我mysql資料庫。

使用第一個函數 count() 統計元祖的個數 。

說明,我這個虛擬庫里有127個元祖。

然後展示 第二個函數, rand() 用於產生一個 0~1的隨機數 。

再輸出幾下。

是不是都不一樣?不一樣就對了,隨機的。

然後我用這個 " floor() 向下取整 " 這個函數,我讓他把隨機數套在裡面。

這樣是不是就會只輸出 0 ,1 ,這兩個數?

再多輸出幾下。

我擦,不出現1 。。。。。我再輸出。。。

好 了,終於出來 1 了,說明,咱們的假設是正確的。

然後我們開始展示 group by 依據我們想要的規則對結果進行分組。

這裡就是把information_schema.tables下的table_name,tables_schema 以table_schema為標準開始分組。然後左邊的是右邊的第一個表名。

恩,就是這個意思。。。。

好了函數都弄完了,開始構造報錯語句了。

首先,我們連接一個資料庫,我隨便連接一個,比如 dvwa 。

然後查詢資料庫名。

對了,為了讓報錯顯示的好區分一點,我們加上一些分隔符號,這裡我用的 " 這個符號,對了先轉碼一下。

然後開始添加。

是不是就分隔好了,關於 group_concat()這個是啥意思,我在 mysql 注入里,好像說了,想了解的可以去翻翻看。。。如果沒有,就自己百度吧,我記得我總結了。。。。

上面那一堆顯示頭名的有點不好看,我們可以在後面取一個別名,我就寫個 shiyan 吧。

看是不是?頭名變成 shiyan 了?

下面我們把向下取整這個隨機數加進去。

再輸出下,還應該出現個1才對,就像上面的一樣。

然後,我們再增加一些內容。

這句的意思就是, information_schema.tables 裡面有多少條記錄,就輸出多少次。

應該是這個意思,我也不是太懂,畢竟我對報錯還是不咋熟,,,

我看人家視頻上是這麼說的。。。。就這樣吧。。。

我們把這個規整下一下。

用的是 concat 這個函數。

這裡還顯示了有127條記錄。

然後我們開始分組,以 shiyan 為標準開始分組。

一共為兩組,隨機數就兩組就。。。

然後我們再添加一個函數 count() ,這是統計的,我們來統計下一共有多少個0,多少個1.

額,報錯了。。。終於報錯了。。。。。

然後再多試幾遍。。。

看來還不穩定啊,這裡,我們就能總結開,到這裡就已經開始報錯了。

然後我們把報錯的信息換成 version() 看看能不能爆出點信息。。。

好的,成功爆出版本號。

我們再換成 user() ,這個試試看。

也是成功的爆出來了。。。。

雖說還是隨機的靠運氣才能出錯,多試幾遍還是可以的。

我們是不是還能在這個基礎上,增加點查詢語句?

額,出錯了,應該加上 limit 0,1 這個,我再試試。

好的成功了,,,,

再試一遍。

額,看來也是存在隨機性報錯啊。。。。

以後多試試幾遍,還是可以爆出錯誤的,現在我們開始在 limit 0,1這裡切換下試試。

好的,爆出第二個數據了。

這裡報錯的原理,詳細大家已經有了一個簡單的了解了吧?我自己也又加深了一遍。

嘎嘎,我擦,一不小心都已經凌晨1點了,我趕緊把下部分總結了,開始睡覺。。。


推薦閱讀:

Sqli labs系列-less-2 詳細篇
SQL默示錄(一)
【譯文】如何在R語言中使用SQL命令
Sqli labs系列-less-5&6 報錯注入法(下)

TAG:SQL | SQL注入 |