iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
0
Security

CTF30系列 第 11

CTF 8: Personal Website (Web, ASIS CTF 2018 Quals)

簡要

註解如下:

I'm so happy because I've set up new personal website. It's secure isn't it?

從題目看來,應該是用 PHP 寫的題目。(Personal Home Page = PHP)。
點進去的話,會看到一個看起來很一般的網站,但網站看起來.... 是新手寫的。

解題方向

如果仔細看頁面上的 JS code,會看到:

$(document).ready(function() {
    $("img").each(function() {
        var t = $(this),
            i = t.attr("id");
        $.get("/get/image/" + i, function(i) {
            t.attr("src", i)
        })
    }), $("p").each(function() {
        var t = $(this),
            i = t.attr("id");
        $.get("/get/text/" + i, function(i) {
            t.html(i)
        })
    });
    var j = '/admin_area';
    $("h2").each(function() {
        var t = $(this),
            i = t.attr("id");
        $.get("/get/title/" + i, function(i) {
            t.html(i)
        })
    })
});

這代表著有以下路徑可以下:

  • /get/image
  • /get/text
  • /get/title
  • /admin_area

如果我們亂下參數,例如說:

http://206.189.54.119:5000/get/image/'"

這時候會拿到回覆,放在 Header 內:

Application-Error: exception: SyntaxError: Unexpected token ILLEGAL`

代表說我們可以朝 Fuzzing 的方向走。假設下 /get/image/xxx 時,會拿到:

Application-Error: exception: ReferenceError: xxx is not defined near 'x});return res;'

故我們可以從內容推測這是某種類似 Node 的環境。前面的 Code 大概是:

// do something

something({a: <內容>'})
return res

此時我們可以試著下:1});return {1:1};}%2F%2F。因為 %2F 會翻譯成 /,故會把後面的程式全部給註解掉。但這樣會拿到:

Application-Error: Couln't find "picture_path" property in returning object from database.

故這時候我們就可以知道,這是一個 mongoDB shell。接下來我們可以用 db.getCollectionNames() 來取得所有的表,之後試著找出 /admin_area 的帳密,拿下這題的 Flag。

參考資訊

CTFtime.org / ASIS CTF Quals 2018 / Personal website / Writeup


上一篇
CTF 7: Buy Flags (Web, ASIS CTF 2018 Quals)
下一篇
CTF 9: Oh My Raddit (Web/Crypto, HITCON CTF 2018)
系列文
CTF3030
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言