본문 바로가기
Dreamhack WarGame

[Dreamhack] 64se64 문제 풀이

by whiteTommy 2023. 11. 17.

Dreamhack CTF Season3 round #6 에 출제된 문제이다.

 

웹해킹 문제이므로 https:// host : port로 서버에 접속한다.

http://host3.dreamhack.games:15250/

그러면, 문제 설명에서 말하는 html 페이지가 나오는데, 소스 코드를 확인하기 위해서 관리자 모드(F12)로 들어가 준다.

<!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>

위의 html 소스 코드에서 hidden 되어 있는 수상한 텍스트가 발견이 되었다.

 

input 태그의 name 값에서 64 se64 인코딩 되어 있다는 사실과 함께, value 값을 보면 Base64로 인코딩(Encoding) 되어 있는 문자열을 확인할 수 있다.

 

그래서, value 값을 Base64로 디코딩(Decoding)하는 과정이 필요하다.

 

https://www.base64decode.org/ko/

위의 사이트에 들어가서 value에 있는 문자열을 디코딩하였다.

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

 

그 결과, python 코드가 나왔다.

 

 

이 코드를 Visual Studio에서 컴파일을 해보았다.

 

DH {해쉬값} 형식으로 출력된 플래그 값을 얻었다.