Sqli labs系列-less-11&12 post注入篇
感覺我有點跑偏了 = = ,從一開始的闖關為主的記錄變成了以SQL注入教學為主的記錄了。。。。
就我總結的這個會有幾個人看?雖說都是基礎性的,原理性的,,,我開始總結的語言好像從一開始對我自己的記錄變成了教程式的SQL注入。。。我弄這個專欄不就是為了再梳理一遍我的零碎的知識面嗎?只不過以靶場為原型,來慢慢的整理?
一個寫給自己的只為讓自己更加理解原理學會攻防的專欄而已,,別想太多了。。。自己看看得了。。。。。
好了不扯了,正文開始。。。
什麼是 POST? POST就提交式的,就像,我們前幾關都是 get 形式的注入,以得到的方式來注入,就是我們向伺服器提交一個請求,然後得到伺服器給我們的響應。
而POST 是提交式的,就是我們給伺服器提交數據,讓伺服器自己去處理。
get 傳輸的數據比較小,不能大於2kb(ie6的限制),但是 POST就不一樣了,一般的不限制數據的大小,除非有些會會專門的設置限制。
關於我說的 get 的限制,一般都是按瀏覽器的,下面我貼一個詳圖。

而且,get 一般都是可見的,而POST一般都是不可見的,除非抓包。。。。
所以說 get 的安全性沒有POST的安全性高,但是 get 利於查詢,而 POST 利於傳輸數據。
好了,開始打開第十一關,我這裡直接連著把第十二關也說了,因為這兩個都差不多,一個是單引號,一個是雙引號加括弧。
配置環境中。。。

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

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

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


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



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

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



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

所以就登錄成功了,但是這就結束了嗎?不,沒有,我們還要注入啊啊啊!!!
但是這是POST提交啊,我們從哪裡注入啊?難道用抓包工具?那太麻煩了,,難道沒有別的方法嗎?
答案肯定是有的,比如說 #(手動滑稽...)

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

對了,難道除了那一個閉合法嗎?閉合可是可以構造很多的啊?
那我就再隨便組個閉合的。


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


最後得出來是個2,兩個欄位。
開始聯合查詢。



對了,在演示下第十二關。。。
先讓大家看下源碼。

然後開始直接演示。


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

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

要是還是不懂,就把這最後三個圖,好好的看看。
總結:
往後的幾個關卡就是基於POST的閉合注入啊,基於POST的布爾盲注 啊,基於POST的時間上的盲注啊,等等。
不過我記錄這幾個的時候,我肯定不會再像前幾關一樣再演示函數了,,,因為方法都一樣,只不過換另一個提交方式而已。
好了,就這個吧,這一關,主要是科普POST注入的。
推薦閱讀:
※sql連接查詢中on篩選與where篩選的區別
※為什麼MySQL對SQL標準的支持那麼不誠意?
※mysql表中查找和小於某個數的所有最前面的記錄?
※如何自學SQL?
