cookie
users = {
'guest': 'guest',
'admin': FLAG
}
코드를 통해 guest와 admin 계정이 존재하며, admin 계정의 비밀번호가 FLAG 값으로 설정되어 있음을 확인하였다.
- 아이디와 비밀번호 모두에 guest를 입려하여 로그인한다.
- 개발자도구 > Application > Cookies에서 username의 value를 admin으로 변경 후, 새로고침한다.
정답
DH{7952074b69ee388ab45432737f9b0c56}
devtools-sources
index.html에서 개발자도구 > Sources 탭에 진입한 후,
Windows에서는 Ctrl + Shift + F,
Mac에서는 Command (⌘) + Option (⌥) + F 단축키를 사용하여 “DH”를 검색한다.
검색 결과, main.scss 하단에서 flag가 확인된다.
정답
DH{2ed07940b6fd9b0731ef698a5f0c065be9398f7fa00f03ed9da586c3ed1d54d5}
file-download-1
- falg.py 파일을 다운로드해야 했기 때문에 Filename과 Content에 flag.py를 입력하였다.
- http://host3.dreamhack.games:24572/read?name=flag.py 경로를 확인하였다.
- 파일 경로를 http://host3.dreamhack.games:24572/read?name=../flag.py 로 변경하였다.
→ 파일명 앞에 ../을 입력하면 상위 디렉토리로 이동할 수 있으며, 이를 통해 원하는 파일에 접근할 수 있다.
힌트
- 파이썬 코드에서 filename에 '..'이 포함될 경우 메모 등록이 차단되는 것을 통해 경로 조작 가능성을 유추할 수 있었다.
- /read?name= 파라미터에 전달되는 값이 그대로 파일 경로에 사용되는 것을 확인하였다.
→ 사용자 입력값에 대한 별도의 검증이 수행되지 않아 임의 파일 접근이 가능함을 확인하였다.
filename = request.args.get('name', '')
with open(f'{UPLOAD_DIR}/{filename}', 'rb') as f:
정답
DH{uploading_webshell_in_python_program_is_my_dream}
64se64
1. index.html에서 개발자도구 > Sources로 코드 확인
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>
<h1>Welcome! 👋</h1>
<form method="POST">
<input type="hidden" name="64se64_encoding" value="IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwphc2M9WzY4LCA3MiwgMTIzLCA5OCwgMTAxLCA0OCwgNTIsIDU0LCA5OCwgNTUsIDUzLCA1MCwgNTAsIDk3LCA5NywgNTAsIDEwMSwgNTAsIDU2LCAxMDIsIDUwLCA1NSwgNTQsIDEwMSwgNDgsIDk5LCA1NywgNDksIDQ4LCA1MywgNTAsIDQ5LCAxMDIsIDUwLCA1MSwgOTcsIDQ4LCA1MywgNTYsIDU1LCA0OCwgNDgsIDUzLCA5NywgNTYsIDUxLCA1NSwgNTUsIDUxLCA1NSwgNDgsIDk3LCA0OSwgNDksIDEwMSwgNTMsIDEwMSwgNTIsIDEwMCwgOTksIDQ5LCA1MywgMTAyLCA5OCwgNTAsIDk3LCA5OCwgMTI1XQphcnI9WzAgZm9yIGkgaW4gcmFuZ2UoNjgpXQpmb3IgaSBpbiByYW5nZSgwLDY4KToKICAgIGFycltpXT1jaHIoYXNjW2ldKQpmbGFnPScnLmpvaW4oYXJyKQpwcmludChmbGFnKQ==">
</form>
</body>
</html>
2. https://www.convertstring.com/ko/EncodeDecode/Base64Decode 사이트에서
Base64로 디코딩하니 파이썬 코드 나옴
#!/usr/bin/env python3
asc=[68, 72, 123, 98, 101, 48, 52, 54, 98, 55, 53, 50, 50, 97, 97, 50, 101, 50, 56, 102, 50, 55, 54, 101, 48, 99, 57, 49, 48, 53, 50, 49, 102, 50, 51, 97, 48, 53, 56, 55, 48, 48, 53, 97, 56, 51, 55, 55, 51, 55, 48, 97, 49, 49, 101, 53, 101, 52, 100, 99, 49, 53, 102, 98, 50, 97, 98, 125]
arr=[0 for i in range(68)]
for i in range(0,68):
arr[i]=chr(asc[i])
flag=''.join(arr)
print(flag)
3. 파이썬을 설치하지 않았다면 온라인 컴파일러 이용
https://www.mycompiler.io/ko/new/python
정답
DH{be046b7522aa2e28f276e0c910521f23a0587005a8377370a11e5e4dc15fb2ab}
welcome
터미널 창에 nc host3.dreamhack.games 15830 입력한다.
Welcome To DreamHack Wargame!
FLAG : DH{5cc72596cba7104569abb37f71b8ccf3}
정답
DH{5cc72596cba7104569abb37f71b8ccf3}
'cs > sec' 카테고리의 다른 글
| Galaxy S22의 앱 adk 정적분석(jadx, frida) (0) | 2026.01.23 |
|---|---|
| 아이폰XR 16.4 IPA 추출하기 (0) | 2026.01.22 |
| [모의해킹] Mobile 교육 (0) | 2026.01.16 |
| UnCrackable Level3(후킹을 활용한 실습 문제 분석) (1) | 2026.01.15 |
| UnCreakable Level2 실습(후킹을 활용한 실습 문제 분석) (0) | 2026.01.15 |