標籤:

Sqli labs系列-less-11&12 post注入篇

感覺我有點跑偏了 = = ,從一開始的闖關為主的記錄變成了以SQL注入教學為主的記錄了。。。。

就我總結的這個會有幾個人看?雖說都是基礎性的,原理性的,,,我開始總結的語言好像從一開始對我自己的記錄變成了教程式的SQL注入。。。我弄這個專欄不就是為了再梳理一遍我的零碎的知識面嗎?只不過以靶場為原型,來慢慢的整理?

一個寫給自己的只為讓自己更加理解原理學會攻防的專欄而已,,別想太多了。。。自己看看得了。。。。。

好了不扯了,正文開始。。。

什麼是 POST? POST就提交式的,就像,我們前幾關都是 get 形式的注入,以得到的方式來注入,就是我們向伺服器提交一個請求,然後得到伺服器給我們的響應。

而POST 是提交式的,就是我們給伺服器提交數據,讓伺服器自己去處理。

get 傳輸的數據比較小,不能大於2kb(ie6的限制),但是 POST就不一樣了,一般的不限制數據的大小,除非有些會會專門的設置限制。

關於我說的 get 的限制,一般都是按瀏覽器的,下面我貼一個詳圖。

不過總的來說,還是數據比較小,數據一多,那URL的長度也就太長了吧?

而且,get 一般都是可見的,而POST一般都是不可見的,除非抓包。。。。

所以說 get 的安全性沒有POST的安全性高,但是 get 利於查詢,而 POST 利於傳輸數據。

好了,開始打開第十一關,我這裡直接連著把第十二關也說了,因為這兩個都差不多,一個是單引號,一個是雙引號加括弧。

配置環境中。。。

是不是有點熟悉,一般後台登錄,都是這個。。。

然後我們隨便輸個賬號密碼,看看。

登錄失敗。。。。

然後我們輸入正確的。。。admin 。。。admin 。。

登錄成功,並成功的顯示出數據。。。

然後我們故意輸入一個錯誤的賬號密碼,再加一個點,看看有沒有注入。

好的,報錯了,說明存在注入,我們先把報錯的信息,複製到記事本里。

由於這是 POST 的登錄界面,除了上面的賬號處報錯了,下面的密碼處,我們還沒測試了,所以還無法猜測這個SQL語句是什麼。。

那我們繼續讓上面報錯,下面的我們啥都不輸入,看看。

好了這次的報錯很徹底,我們把報錯的信息複製開,再貼到文本里。

我們開始分析下這個SQL語句是什麼。。。

經過初步判斷,這個SQL語句應該是這樣的。

然後我們開始根據經驗進行閉合。。。

這裡我用的是 or 的邏輯符。

關於這個 or 的邏輯符的意思的百度百科。

然後我們開始嘗試我們的上面的那個閉合法,當然也可以說是萬能密碼。(*^__^*) 嘻嘻……

好的,登錄成功!!!

這是什麼原理了?我們把這個閉合語句帶入我們自己判斷的SQL語句中,進行分析。

錯誤 or 正確 ,然後再注釋到後面的,那不就是正確啊?!!!

所以就登錄成功了,但是這就結束了嗎?不,沒有,我們還要注入啊啊啊!!!

但是這是POST提交啊,我們從哪裡注入啊?難道用抓包工具?那太麻煩了,,難道沒有別的方法嗎?

答案肯定是有的,比如說 #(手動滑稽...)

對,沒有錯!!!火狐那個hackBar插件的 Enable post data 這個模塊可以用來提交數據!!!

那我們來看一下,如何一個手工POST注入。。。

具體的,我就詳細的說了,把這個圖多看幾遍,你肯定能看懂。如果看不懂,那繼續往下慢慢看 = = !!!

對了,難道除了那一個閉合法嗎?閉合可是可以構造很多的啊?

那我就再隨便組個閉合的。

來,看看這個閉合法行不行?

完美,成功了,看來 POST 閉合和 get 閉合沒多大區別啊!!!

下面,我們開始查欄位,先查了個5,因為我都是5,5的查的。

好吧,,錯了,,那再繼續猜。。。

最後得出來是個2,兩個欄位。

開始聯合查詢。

額,沒報錯,我們在前面加個 ,讓其報錯。

成功報錯,那,我們就開始查數據了吧?

既然這樣,那剩下的操作,不就和以前的一樣了啊?那我就不操作了。

對了,在演示下第十二關。。。

先讓大家看下源碼。

是不是就多了個 ") 是不是?我們直接閉合就是了。

然後開始直接演示。

恩,基本上,到這裡就完了,但是關於 get 和 POST 的區別,可能大家還是不太理解,那我就再放幾個圖,仔細看就能看懂。

這是 get 型的,第十關,就是以前在URL(網址鏈接那)注入的,我們通過數據包的形式,讓大家看,這個數據包是基於http協議的數據包,關於http協議,有興趣的可以看看,話說,不懂http協議的基本上不會對繞狗有啥研究的。 #(繼續手動滑稽...)

我們再貼一個POST的抓包。

我們通過正確 admin,admin登錄,然後抓的這個登錄時的POST數據包。

看出來了沒?那我再貼一個圖。。。

這是最後一個圖了,這個圖要是再看不懂,就沒啥意思了哈。。。。

要是還是不懂,就把這最後三個圖,好好的看看。

總結:

往後的幾個關卡就是基於POST的閉合注入啊,基於POST的布爾盲注 啊,基於POST的時間上的盲注啊,等等。

不過我記錄這幾個的時候,我肯定不會再像前幾關一樣再演示函數了,,,因為方法都一樣,只不過換另一個提交方式而已。

好了,就這個吧,這一關,主要是科普POST注入的。

推薦閱讀:

sql連接查詢中on篩選與where篩選的區別
為什麼MySQL對SQL標準的支持那麼不誠意?
mysql表中查找和小於某個數的所有最前面的記錄?
如何自學SQL?

TAG:SQL | SQL注入 |