[BoB CTF] misc) 02_bob_secret_note

2023. 8. 24. 15:47·BoB/write-up

  AES 128bit를 EBC, CBC 두 개의 운영모드를 사용해서 암호화하고 Base64로 인코딩한 값 (토큰)을 바탕으로 admin에 해당하는 토큰값을 추정하여 로그인해야하는 문제이다.

  처음 서버에 접근할 때에는 PoW 챌린지가 주어지는데, 아래와 같이 코드를 작성해서 해결해주면 된다. 

import json
from base64 import b64encode

def encode_to_base64(data):
    # Convert the json data to string
    json_str = json.dumps(data)
    
    # Encode the string to bytes
    json_bytes = json_str.encode()
    
    # Convert bytes to base64 encoded string
    base64_encoded = b64encode(json_bytes).decode()
    
    return base64_encoded

# Example usage
data_to_encode = {
    "token": "챌린지로 주어지는 토큰 값을 여기에 입력",
    "iv": "13c47f87221fbdfbc12d397de94d2252"
}

encoded_token = encode_to_base64(data_to_encode)
print(encoded_token)

  각 토큰은 Base64로 인코딩 되어있는데, 디코딩할 경우 token과 IV (initial vector) 값이 JSON 형식으로 작성되어 있다. 모든 경우에서 IV 값은 동일하고, 토큰 값의 첫 블럭과 맨 마지막 블럭의 값 역시 동일하다. 첫 블럭은 EBC, 그 다음부터는 CBC로 암호화 하는데, 첫 블럭의 값은 항상 일정하므로 사실상 CBC 모드로만 암호화 하는 것과 동일하다. 때문에 admin으로 가입했을 때의 토큰 값을 알아내기 위해서는 admin과 유사한 계정을 여러 개 만들어 패턴을 파악한 다음, 역으로 admin의 토큰 값을 추정해내면 된다.

 

51db35eca235fe7a		admin 1
d088939e3f57dadd

38d34e66ef5fcb90
7ab6b09df4c1bbbc

83df7b311ea9107c
974b2fdb22dd66a8

0e200b115cccf7a6
9118bd3c9615ebd1

a2b5728418a4f9e6
197d5b7c389cedd4


=
51db35eca235fe7a		admin1
d088939e3f57dadd

7752fefc87e9d00a
c511dd4f3675f0c9

6036243dffd957d8
21c814018349e7b0

8fec00e97a743a95
8322e29fdbf83b0a

82664a306c0c9319
94bef0a9103b6ca5


=
51db35eca235fe7a		admin 2
d088939e3f57dadd

eff8b24c393246ec
79e8599b50d42e22

b99178d222efd609
f8d68b0225f79a04

78cc7cd733466e0d
5ff887e2dc87ac78

67474203ef854f50
65111c6356afeb37


=
51db35eca235fe7a		admin2
d088939e3f57dadd

acc40b7982584b2f
12415bcc0af73e7c

1aae5f7f31d12f66
117327366b521ee3

e02c26b681d54db5
38c8a6fadfe9bd2e

ab19d6411163a0f4
4280ba9849597370

 

근데 그걸 어떻게 하지..

'BoB > write-up' 카테고리의 다른 글

[BoB CTF] rev) 01_TEAtime  (0) 2023.08.24
[BoB CTF] web) 02_old_python_interpreter  (0) 2023.08.24
[BoB CTF] web) 01_flying_chicken  (0) 2023.08.24
[BoB CTF] misc) 03_I'm_Happy  (0) 2023.08.24
[BoB CTF] misc) 01_find me if you can  (0) 2023.08.24
'BoB/write-up' 카테고리의 다른 글
  • [BoB CTF] web) 02_old_python_interpreter
  • [BoB CTF] web) 01_flying_chicken
  • [BoB CTF] misc) 03_I'm_Happy
  • [BoB CTF] misc) 01_find me if you can
re.t
re.t
자동화, 안정적인 서비스 운영에 관심이 많습니다. 클라우드인프라/플랫폼/솔루션 엔지니어를 꿈꾸고 있습니다.
  • re.t
    log
    re.t
  • 전체
    오늘
    어제
    • 분류 전체보기 (48)
      • Repo (2)
        • On Board (0)
        • On going (0)
        • Archive (2)
      • Studies (4)
        • AWS - AHSS (AWS 보안) (2)
        • C++ (1)
        • Python (0)
        • Java (0)
        • C# (0)
        • Unreal Engine (1)
      • Notes (3)
        • System (1)
        • Network (2)
        • Web (0)
        • Crypto (0)
        • etc. (0)
      • War Game (32)
        • CTF (7)
        • dreamhack.io (17)
        • reversing.kr (0)
        • pwnable.kr (1)
        • Lord of SQL Injection (3)
        • misc (2)
        • TBD (2)
      • BoB (6)
        • notes (0)
        • write-up (6)
        • misc (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    C++
    언리얼
    컴파일러
    메모리
    Unreal
    Cow
    UE
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
re.t
[BoB CTF] misc) 02_bob_secret_note
상단으로

티스토리툴바