原創: h0x 合天智匯

前言

某日突然對肥宅的生活感到了厭倦,竟連肥宅快樂水喝起來也索然無味,我需要改變!想起胖友幾天前發的一個灰色性質網站,正好測試一下打發時間。直入主題,通過訪問網站發現需要輸入密碼,地址欄有傳遞參數,手工測試加引號報錯,初步判斷存在SQL注入。鏈接:xxxx.com/login.php?

發現Get傳入id參數,直接加引號

如上報錯,且顯示了資料庫查詢語句,select* from catconfig where id=1。一般來說到這裡,可以直接扔進Sqlmap跑,我作為一個肥宅主義者-懶,自然選擇抄起神器一頓操作,然後便出現如下的畫面。

如上,Sqlmap報一大片刺眼的紅色光芒讓我的眼睛發疼,我知道這不是一個簡單的站,「連接被重置」簡簡單單五個字讓人心涼涼,這個站看似漏洞百出,實則暗藏玄機。根據我多年的計算機基礎知識判斷,這站應該是有WAF,只有WAF才能如此毫不講道理,如此狠心,甚至沒任何提示的就把我IP拉黑了,一般來說waf拉黑IP是有時間限制的,10-40分鐘不等,可以設置。於是在等待的時間裡,我進行信息收集。正常的測試流程,信息收集應該是最先做的。不過我是個肥宅,不到必不得已,我很可能就忽略不收集了。

信息收集

在被拉黑的這段時間裡,我收集了一些基本信息,如下

1、IP:x.x.x.x xx省xx市阿里雲2、獨立伺服器,無旁站

看到阿里雲我突然就明白了,阿里雲盾防護,難怪被拉黑了。此處透露一個可能人盡皆知的小技巧,阿里雲盾不攔截阿里雲自身的伺服器,所以如果用阿里的ECS去跑就不會被攔截。不過我作為一個肥仔,能省一杯快樂水的錢則省一杯,不到必不得已,我不會去開通阿里雲的ECS的。過了差不多半個小時,我發現我的訪問恢復了,順帶收集一下伺服器環境信息。1、容器:Nginx(訪問不存在的目錄,404頁面)2、系統:Linux(通過大小寫判斷,Linux對大小寫敏感,Windows大小寫不區分)3、資料庫:Mysql(引號報錯)

4、腳本:php(不瞎都看的出來)

在獲取上述信息後,進行下一步的測試。

兩層防護?

於是又回到原點,我看著這個主頁面,頁面靜靜的看著我,貌似在說:來啊,小老弟,怕你不成。此時我想點支煙,但我突然想起沒有打火機,再一想,我根本不抽煙啊,於是我喝了一口快樂水,嗝~。手工測試,順手and1=1,返回

噗,這不是360安全主機嗎?除了阿里雲盾還有360安全主機?於是開始了瘋狂的Fuzz,感覺想用unionselect去查詢是很困難的了,測試中發現使用報錯注入能成功Bypass。如下:

exp(~(select*from(select%20user())x));--+

構造為:xxxx.com/login.php?and exp(~(select*from(select user())x));--+

如上,可以獲取當前的資料庫用戶,附常用的函數,分別進行測試1.version()——MySQL版本2.user()——資料庫用戶名3.database()——資料庫名4.@@datadir——資料庫路徑5.@@version_compile_os——操作系統版本

此外,在該站點的另外一處注入點處,發現表名cat_members

此處先假定admin用戶也存在cat_members表中,根據多年的計算機基礎知識,一般列名為username,password。為什麼這樣,因為懶想碰碰運氣。那麼我的查詢語句應該是:

但是當試圖讀password數據時

於是進行測試,發現以下規律:

當出現Selectfrom時會進行攔截

於是整個測試重點變成了如何BypassSelect from 語句。

思考嘗試

由上,測試主要受阻於攔截了Selectfrom語句,於是我抄起鍵盤一頓百度加論壇亂搜,找到了大佬們以前的bypass方法。

搜索到的一些Payload1、/*!12345select*//**/from2、/*!50001select*/from

3、Select/**/column_name/**/from

4、/*!/*!select*/column_name/*!/*!from*/5、空格用/*!*/代替6、%53elect/*!1,2,schema_name%0aFROM7、Get+Post,編碼,超長內容等等。以上收集來源於土司論壇及百度搜索。但測試發現只要帶/**/這樣就直接攔截了,所以上述的payload在此處都失效。

根據如上的測試,判斷是通過正則進行匹配,只要匹配到某些字元則進行攔截測試到這裡,我已經很疲憊了,200斤的身體也開始慢慢透支,力不從心,於是我緩緩翻著網頁上的搜索結果,繼續逐個測試,竟然發現了轉機。

突破總結

可能是真的運氣好,真好,明天會更好,大家好,我是陸超。呃,回到話題,在先知論壇的一篇文章中,我的WafBypass之道(SQL注入篇)中,找到了一個Bypass方法。鏈接:xz.aliyun.com/t/368

Payload:%23%0a

此處確實運氣好,成功猜到了admin用戶在cat_members,且列名為username、password。如果不是的話,可以使用以下方法,逐個獲取,先獲取表,在獲取列名,不過需把空格替換為以上的payload。

接上,解密一下,登錄即可

總結:網上bypass的文章有很多,不過還是要結合實際進行測試,很多時候運氣與堅持也佔了很大因素,作為幸運肥宅,我不會輕易低頭。後續發現此為匹配規則如下,作為小白,看得我腦殼疼,歡迎各位大佬指教。

文章僅用於普及網路安全知識,提高小夥伴的安全意識的同時介紹常見漏洞的特徵等,若讀者因此作出危害網路安全的行為後果自負,與合天智匯以及原作者無關,特此聲明


推薦閱讀:
查看原文 >>
相關文章