본문 바로가기
정보보안/Dreamhack

[Dreamhack Wargame] Beginner - 64se64 문제 풀이

by 용오동 2024. 11. 4.
반응형

☆ Beginner - 64se64


[1] 문제

 

♣ 64se64 문제는 Dreamhack CTF Season 3 Round #6에 출제된 문제이다.

♣ HTML 페이지의 소스코드를 확인한 후 문제를 풀어야 한다.

드림핵 워게임 - 64sd64 / 출처 : Dreamhack

 


[2] 풀이

 

♣ 서버를 생성하고 생성된 URL을 클릭해 웹 서버에 접속한다.

드림핵 워게임 - 64se64 / 출처 : Dreamhack

 

 

♣ 접속한 웹 페이지의 모습을 확인할 수 있다.

접속한 웹 페이지(http://host3.dreamhack.games:13561)

 

 

♣ 소스 코드를 확인하기 위해 [F12] 버튼으로 브라우저 개발자  도구를 열어 HTML 문서를 확인한다.

[F12] 개발자 도구 -> Elements에서 HTML 문서 확인

 

 

♣ input 태그의 name 값에 64se64 encoding 되어있다는 것을 확인할 수 있고, value에 인코딩(Encoding)된 문자열을 확인할 수 있다.

<html>
<head>
  <meta charset="utf-8">
  <title>Welcome</title>
</head>

<body>
  <h1>Welcome! 👋</h1>
  <form method="POST">
    <input type="hidden" name="64se64_encoding" 
    value="IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwphc2M9WzY4LCA3MiwgMTIzLCA5OCwgMTAxLCA0OCwgNTIsIDU0LCA5
    OCwgNTUsIDUzLCA1MCwgNTAsIDk3LCA5NywgNTAsIDEwMSwgNTAsIDU2LCAxMDIsIDUwLCA1NSwgNTQsIDEwMSwgNDg
    sIDk5LCA1NywgNDksIDQ4LCA1MywgNTAsIDQ5LCAxMDIsIDUwLCA1MSwgOTcsIDQ4LCA1MywgNTYsIDU1LCA0OCwgND
    gsIDUzLCA5NywgNTYsIDUxLCA1NSwgNTUsIDUxLCA1NSwgNDgsIDk3LCA0OSwgNDksIDEwMSwgNTMsIDEwMSwgNTIsI
    DEwMCwgOTksIDQ5LCA1MywgMTAyLCA5OCwgNTAsIDk3LCA5OCwgMTI1XQphcnI9WzAgZm9yIGkgaW4gcmFuZ2UoNjgp
    XQpmb3IgaSBpbiByYW5nZSgwLDY4KToKICAgIGFycltpXT1jaHIoYXNjW2ldKQpmbGFnPScnLmpvaW4oYXJyKQpwcml
    udChmbGFnKQ==">
  </form>

<deepl-input-controller></deepl-input-controller></body></html>

 

 

♣ 코드 변환 사이트 :  https://tools.dreamhack.games/cyberchef

♣ 위 코드 변환 사이트에서 발견한 value 문자열을 Base64로 디코딩한다.

value에서 발견된 문자열을 Base64 디코딩

 

 

♣ Base64로 디코딩하였더니 Python 코드가 나온다.

#!/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)

 

 

♣ Python3를 실행하여 코드를 실행하면 플래그 값을 얻을 수 있다.

Linux에서 Python3를 실행하여 얻은 파이썬 코드를 실행한 결과

 

 

♣ 얻어낸 플래그 값을 입력하여 제출한다.

 DH{be046b7522aa2e28f276e0c910521f23a0587005a8377370a11e5e4dc15fb2ab}

Flag값 입력

 

 

♣ 제출 결과

Flag 제출 결과


반응형