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 裡面有多少條記錄,就輸出多少次。應該是這個意思,我也不是太懂,畢竟我對報錯還是不咋熟,,,
我看人家視頻上是這麼說的。。。。就這樣吧。。。
我們把這個規整下一下。
然後我們開始分組,以 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 報錯注入法(下)