作者:
louys
·
2016/03/04 10:32
二哥說過來自烏雲,迴歸烏雲。Web400來源於此,應當迴歸於此,有不足的地方歡迎指出。
0x00 Web200
先不急著提web400,讓我們先來看看web200的xss。
Url:http://960a23aa.seclover.com/index.php?xss=xxx
顯然引數xss是要上payload。先大概看一眼都過濾了什麼。
![p1](https://i.iter01.com/images/5b6245639aa1bc9778f6685e7992d52db87c886ce172ceb421c84662a9a4ba9c.jpg)
可以發現尖括號和冒號都過濾成下劃線了,並且嘗試了好幾種姿勢也無法繞過。
再看看其他的過濾規則。
![p2](https://i.iter01.com/images/7e8bb6233f35b76c3a88e85fea41e9bbfc8cad76b1fbdf5429fbd92d11ef899b.jpg)
基本都過濾了,就剩下一個孤零零的1了。
![p3](https://i.iter01.com/images/32a5fcf7d2284f55f0f553ff81731940f22bb118fb2ee6af7f4a1cbc8c4b83f4.jpg)
再祭出《web前端安全》提到的奇妙payload,注意到onerror中的on被吃掉了。
連打多個on也是沒有用的,聯想到以前玩sql注入的經驗,oonn這樣的形式是能打出on來的。看到這結果的存在,頓時感覺來了希望。
![p4](https://i.iter01.com/images/1f43c7171d8115b2b5d1740acb2a0c17475e380ad0f1f15619ba98cc56374e95.jpg)
這種形式似乎已經很接近了,但是萬惡的下劃線仍舊無法解決,一度陷入死局了。
後來,學長說仔細看看原始碼,那誰寫過網頁他或許能看出什麼。
![p5](https://i.iter01.com/images/2d18fd2cd4f1383b27af5173ed6aefd6b60c94073311cc3e0c0d9db10e27da33.jpg)
注意到開頭一句,似乎平時我不是那麼寫的,又注意到頁面有css,就跑偏到了/web/?id=11539這篇文章,但是似乎並沒有什麼用。百度了一下第一句話。
![p6](https://i.iter01.com/images/8d529e5591bb31d2b084835588eea94edf7a739a67fca4c46706fefabee926b5.jpg)
!!?識別和載入,趕緊試了一下。
AngularJS 的表示式是寫在雙大括號內:{{ expression }}
。
![p7](https://i.iter01.com/images/4960a8be9313f270565deb9981a6376c9cbe294e12f9a78fa737069bafb5d344.jpg)
識別了!
![p8](https://i.iter01.com/images/c81818513e867b57dea3e825bcf2c61f430c8f9108228a3991b145cb7650872a.jpg)
確定了版本號以後,隊友就找到一發payload。
經過加工:{{'a'.coonnstructor.prototype.charAt=[].join;$evevalal('x=1} } };aleonrt(1)//');}}
![p9](https://i.iter01.com/images/376aec83ee264fd4fcc6d72faeb707ce3755dd489d0cd644d0e50b2d346311ea.jpg)
彈彈彈了:)
0x01 Misc:饑荒_MC
在web400前,那就再提提misc的饑荒_MC,這是我見過的最有趣的ctf題目沒有之一,之前聽說了好久的websocket也第一次見到例項。
開啟一看,似乎是個小遊戲。
![p10](https://i.iter01.com/images/5e5df55c4a07c48b127077c812cb7058bb78984e3449a9cfa7a8add79f7ee8e3.jpg)
一般出現在ctf裡的遊戲不能輕視。
第一關一切平和,直通第二關。
![p11](https://i.iter01.com/images/96585d9fed97c11fe30e1acde5690d4a71b65638bb44c06f8f84756250c5ee90.jpg)
第二關,似乎要找到一個key才能通關,頓感道路坎坷。Key是什麼也沒說,只說空格是個功能按鍵,那就先跑跑全圖唄。跑了一會感覺太煩了,找隊友寫了個按鍵精靈來模擬。
![p12](https://i.iter01.com/images/946b5e676af23c903e2d01652fb1cf05c0e2bb218763944b68e013027ecb8ae4.jpg)
但是跑完這張圖也沒能進去,就想會不會key在第一關,要知道這種遊戲向來不按常理出牌。
就開始跑第一關,突然發生了一件奇妙的事情,一卡我突然傳送到了一個奇怪的地方。
![p13](https://i.iter01.com/images/b10fe3e45646d923de6a7f8a7889bce7f68f54f5572a5f5eea47d590dc83f3cb.jpg)
似乎由於不明原因,我突然跳關到了第三關。(後來想想可能是時間競爭?)
第三關是個砍樹關,由於已經靠按鍵精靈連過兩關,思路已經被定勢了,已經聽不進學長說什麼js本地除錯了,義無反顧的跳進坑裡。要砍9999個木頭來做木鎬(一切始於木頭),發現要按住空格一秒才能砍到一個木頭,感覺似乎哪裡不對,然而還是找個東西按著空格。。。直到5分鐘後,發現被管理員踢掉了,才最終確定這是個坑,不可能透過小伎倆來過了。只得開啟js程式碼,幸虧寒假看了一下《js-dom程式設計藝術》。
![p14](https://i.iter01.com/images/6928957aec3dd34deeab5a21a468e6dfce3304f1dd6f23eb42303815f3d9720f.jpg)
![p15](https://i.iter01.com/images/1baafb9fe974bc622234311aee0ccfb8fbc513f1ab652fd759d085df221e4a8f.jpg)
引數有個isReady,要載入完全部的圖片才能運作,開啟firebug,把圖片另存為,放到相應位置,再寫個html呼叫game.js(直接檔網頁上的就行)
![p16](https://i.iter01.com/images/ad69867862bde7b3a8659022eab7968033fa7901e3999a3f1204ae5a23e25729.jpg)
突然一下就開啟上帝視角了,毫不猶豫的跳關到level 4,卻發現伺服器提示你的寶石劍在哪?然後就被踢了。觀察了一下程式碼,似乎應該有一隻boss。
![p17](https://i.iter01.com/images/1b623af766329ebfd8c91c21c7c3a171e218401757ece3575743ab3ccde589cc.jpg)
大概長成這樣。
觀察程式碼
![p18](https://i.iter01.com/images/70db10d1be2c5ebbf210bf6961b2e093723a4bdf471eda2a5558baac668b448a.jpg)
實在不行,我就召喚一隻boss出來,然後burp抓包,把玩家改為boss,但是似乎沒有什麼用,應該是在伺服器端做的驗證。
注意到hero的幾種圖片。
![p19](https://i.iter01.com/images/bad84f6d1c8d96975a0e165fe2bbc581c22998cf4eac550dce0843c4eebc52cc.jpg)
![p20](https://i.iter01.com/images/41130124f8708c97d921b170d07c828d9084b41eef555e68ba42541e26ab731e.jpg)
似乎這兩種狀態我都沒有見到過,感覺哪裡不對,再研讀程式碼。
![p21](https://i.iter01.com/images/0b7c8e7d533d58dc89cff17da2efae019a8c4e9d0d6246ec3557de0011292ba2.jpg)
木頭關下面有鑽石關,並且注意到最後一關,似乎有兩個點會自殺,幸虧沒有過去。(第二關前面的門是假門,根本不存在key)
找到了木頭採集函式修改一下。
![p22](https://i.iter01.com/images/65de289a2b6efff9e4e9d729076ffc3acbec33a0b13207110a95efa3cd04277d.jpg)
直接9999,木鎬get。
進入鑽石關
這個似乎和木頭關的函式差不多。(圖片已經修改過)
![p23](https://i.iter01.com/images/e67ebe6a7a2d11b2fa39c9f977dd23299a5292182b7858139c70c3456f2064dc.jpg)
當然直接9999被踢掉線了,嘗試了一下似乎50是極限了。那就要點200下,而且感覺上傳時間還有間隔限制,於是又開啟了戀戀不捨的按鍵精靈。雖然慢,還是能在1,2分鐘裡完成任務。
終於拿到鑽石劍了,如今我已天下無敵,走,捅boss去。
![p24](https://i.iter01.com/images/c0eb867f584a904b995e80ca2e74f4c6863fcc19822c84b9c8d4051c1c77e389.jpg)
系統提示。
![p25](https://i.iter01.com/images/7246fe4f94604ba43a5ba215ee874ca3e6b5e90e45e6df2ee5977ee303edbcfa.jpg)
要捅15下boss或者殺5個人,做為一個wow的pve休閒玩家我當然選擇捅15下boss(注意短距離武器那句話,結合自殺點是把弓箭)。
然而發現boss近距離一刀我就躺了,遠端扣血導致pvp的難度也挺高(除非送人頭)。迴圈往復幾次,終於感覺按鍵精靈的速度不能滿足我了(主要是發現學長在我旁邊一下就拿到鑽石劍了)。就把條件註釋掉,發現上傳速度不再卡頓,但是按200下還是太煩,最終又開啟了按鍵精靈。(這裡其實可以寫個迴圈,論思維定勢的可怕)。
既然近距離一刀秒,我就修改了攻擊範圍,又為了方便瞄準,又把boss影像修改了。
![p26](https://i.iter01.com/images/a10b38b759f5d5e42ed589922625d07f8bf66e93f5d1c904e060a99822d77a18.jpg)
大概是這樣,可惜pve休閒玩家的水準已經不足以讓我靠走位捅到它15下了。
最終在學長提示資料互動的時候終於恍然大悟。
![p27](https://i.iter01.com/images/ccd0eda33e95dfa6e3bff50e5145e3ec88e7833948fb3d0d224e1f6fa2da328b.jpg)
把攻擊地址直接改為boss地址,然後找個陰暗的小角落就ok了。
0x02 Web400
終於到了web400,頁面開啟看一眼(url:http://b525ac59.seclover.com/)
![p28](https://i.iter01.com/images/7749f9c9691813099830b80d4cc858b080b5ad07bf7facd8259badb82e9bb788.jpg)
![p29](https://i.iter01.com/images/cdfc3533c7c8d7ca04c1b04eb07c2a9dc8fc18c6de89fc4309020d14b839b42d.jpg)
一個github的圖示和不要去爆破的提示,點開一看是github第三方授權的頁面。感覺應該不會是github認證的漏洞。
![p30](https://i.iter01.com/images/7469212a7edbf40af00c503567db1b98f488abcb762e7c3ba14a7f1c45e1fb0b.jpg)
繫結後樣子是這樣,一張github頭像的圖片,github的uid,一開始不知道為什麼名字那邊是none,結合find flag man,猜測最後的flag應該會輸出在name的位置,網路也只請求了一張圖片。
![p31](https://i.iter01.com/images/ec284ca087cd0c77a9212ae824298f386addf8c59d3d456da41ac1409c4cafc2.jpg)
又一頭霧水不知道該怎麼辦了。
知道burp抓包的時候,把cookie都去掉後發現了這個。
![p32](https://i.iter01.com/images/f2c49f8a4106a0f6595d8fb18f27fd080d1671b62b945d2dca99623143d1f4aa.jpg)
Flask似乎有點眼熟,感覺在哪裡看到過,於是翻找了一下。
![p33](https://i.iter01.com/images/1d87a52f59b56d5f5fda7018dd29031ec90c36bc461198ed92cdb4735b2a4eff.jpg)
就在幾天前的烏雲知識庫發表的文章,文章提到了控制模板內容來進行任意程式碼執行。再看頁面的情況,感覺確實挺像那麼回事的,模板裡的內容都是我github上的,那麼接下來就是找到可控點,來呼叫python了。接下來就一直跑偏到那張圖片,我一直以為圖片是可控內容,但是搗鼓了半天也沒什麼用。後來點開github的設定突然恍然大悟,明白了為什麼name是none。
![p34](https://i.iter01.com/images/2956b5b6e5cc3b5cb51f9afd48d7f7de764e382d2a41c2cc8f217d9384b30be2.jpg)
因為我根本沒設定名字Orz。趕緊把名字設成{{7*7}}。
![p35](https://i.iter01.com/images/8552d82bbf341bcfc4ed70cc7d0286b268f0d4fbb715a220263353ba4ac9ef22.jpg)
發現被解析了(和那道xss神似的方法)。
原文作者的payload不能直接使用,對python的內建函式也不熟悉,只得翻閱官方手冊。
![p36](https://i.iter01.com/images/dd4ea0f43e6d308480be3ff25da596f0f4c6863e0b49a63462204816d7dad62e.jpg)
找到了開啟檔案的方法,感覺這個靠譜,試了一下,似乎沒有什麼用,於是去github上面搜尋了一下內建的使用方法。
![p37](https://i.iter01.com/images/39364ffd6d5d57781a9b3b444df91154a9641fe8be54dd0bac8e55e972626912.jpg)
問題太多一下子翻不過來,注意到有10個使用者用了這個奇葩名字,就開啟看了一下。
![p38](https://i.iter01.com/images/854e207f3236bbe948ea0b9bb8c9989baf7933efb7f1025f62be5fe900fa55a8.jpg)
!!看我都找到了什麼,複製一句看的順眼的,就爆flag了。
![p39](https://i.iter01.com/images/8b2daebe63a04cfe7178ba7da8ad611a30c8e59e72a40192f56209046621d44b.jpg)
這個應該算是官方福利吧,畢竟不是什麼人都會寫payload的。
以上,完。沒有什麼太多的技術乾貨,基本都是自己逗逼的紀實,不管稽核過沒過,記錄一下還是值得的。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!