Sqli labs系列-less-5&6 報錯注入法(上)
睡了一下午,晚上也沒啥事,還特別精神,就想著,要不繼續做做這個系列第五關和第六關吧,在我一系列常規的測試後發現,第五關和第六關,是屬於報錯注入的關卡,兩關的區別是一個是單引號一個是雙引號。。。當然我是看了源碼的。。。。
基於報錯注入的方法,我早就忘的差不多了,,,我記的我最後一次基於報錯注入是在玩網路攻防平台第幾關來著得,那個關卡時基於報錯注入的,我當時還特地查了好多資料,學習了學習報錯注入,當然在那段時間時,我看到我一個認為不錯的團隊開始收核心成員了,我就發了一份申請,果不其然,我被刷下來了,,,畢竟我還是菜么。。。。。
當時申請的時候,我就想過,團隊不養閑人,畢竟菜,所以菜,我還是繼續努力的學吧,雖說是抱著興趣愛好的玩這個的,萬一,我畢業了找工作,有這個機會,我是不是也能找到這個工作了?興趣變成工作?
好了,話歸正題,關於這關需要用到報錯注入,而我早就忘的差不多了,,,那咋辦了?回想了回想,我一開始玩SQL注入時,我看過習科的SQL手工注入的書,我還看過小迪的SQL注入,當然,,,人家的沒教這個報錯注入。。。。。還有cracer的我也看過,也沒教報錯的。。。。
我了個擦,想了好長時間,我還是直接找這個關的答案吧。。。。
搜了好長時間,我突然想開,我好像在某個平台上看過人家有關於這個SQL注入源碼平台一系列教程,我趕緊去看了,,,,話說我的這個SQL報錯分析,還是在那個平台學會的。。。
我把這個關的呢個教程看了兩遍,人家很詳細的介紹了報錯注入原理,我就按著人家說的,我再總結一編,誰讓這是我的專欄,開這個專欄不就是整理匯總知識?來學習的啊?再整理一遍,我就更加深刻的理解了。
不閑話了,正式開始,我先捋一遍報錯的原理,然後再打這第五關和第六關。
首先我先把需要報錯用到的SQL函數先列開。



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


然後我用這個 " floor() 向下取整 " 這個函數,我讓他把隨機數套在裡面。
這樣是不是就會只輸出 0 ,1 ,這兩個數?


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

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

恩,就是這個意思。。。。
好了函數都弄完了,開始構造報錯語句了。
首先,我們連接一個資料庫,我隨便連接一個,比如 dvwa 。

然後查詢資料庫名。



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

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



應該是這個意思,我也不是太懂,畢竟我對報錯還是不咋熟,,,
我看人家視頻上是這麼說的。。。。就這樣吧。。。
我們把這個規整下一下。


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

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

然後再多試幾遍。。。

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

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

雖說還是隨機的靠運氣才能出錯,多試幾遍還是可以的。
我們是不是還能在這個基礎上,增加點查詢語句?


再試一遍。

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

好的,爆出第二個數據了。
這裡報錯的原理,詳細大家已經有了一個簡單的了解了吧?我自己也又加深了一遍。
嘎嘎,我擦,一不小心都已經凌晨1點了,我趕緊把下部分總結了,開始睡覺。。。
推薦閱讀:
※Sqli labs系列-less-2 詳細篇
※SQL默示錄(一)
※【譯文】如何在R語言中使用SQL命令
※Sqli labs系列-less-5&6 報錯注入法(下)
