INCOGNITO 2022

Cryptohack - Network Attacks

kchabin 2022. 8. 7. 01:20

JSON 오브젝트만 서버에서 입력받는 것 같다. 제공받은 챌린지 파일인 telnetlib_example.py 파일을 수정해서 뭘 해야하는 것 같은데..

일단 칼리에서 nc socket.cryptohack.org 11112로 접속했다.

그냥 아무말이나 입력했더니 에러 났다.

내가 사고싶은 걸 알려줘야하는 것 같다.

#!/usr/bin/env python3

import telnetlib #telnet 원격 접속 제어용 모듈
import json

HOST = "socket.cryptohack.org" #telnet으로 접속할 대상
PORT = 11112 #TCP 포트

tn = telnetlib.Telnet(HOST, PORT) 


def readline():
    return tn.read_until(b"\n")

def json_recv():
    line = readline()
    return json.loads(line.decode()) 

def json_send(hsh):
    request = json.dumps(hsh).encode()
    tn.write(request)


print(readline())
print(readline())
print(readline())
print(readline())


request = {
    "buy": "clothes"
}
json_send(request)

response = json_recv()

print(response)

코드를 보면 

request = { "buy": "clothes"}

json_send(request) 

라는 코드가 있는데 이제 살 것 = 옷 이런 식으로 서버에 json 형식으로 요청을 하고, json으로 응답을 받아오는 것 같다. 

 

readline 함수 = 개행 문자까지 서버 내용을 읽어오는 것 같음.

json_recv() : readline으로 읽은 데이터를 json문자열에서 python 객체로

json_send(hsh) : hsh라는 인자를 인코딩하고 json으로 덤프를 한 걸 request라고 한다. tn에 request를 작성한다. 

 

loads() 함수 : JSON 문자열을 파이썬 객체로 변환한다.

dumps() : 파이썬 객체 -> json 문자열

load() : json 파일에 저장된 데이터를 파이썬 객체로 불러오는 함수.

 

telnetlib은 텔넷 서버를 제공하는 파이썬 모듈이라고 한다.

 

request 는 json 문자열인것 같다. 

지금 requset를 보내서 tn 서버에 쓰는 것 같은데, 그러면 저 json 문자열을 바꿔줘야하는거 아닐까?

 

그러니까 정리하자면, 

request = 내가 사고 싶은 것

response = 요청에 대한 응답(from tn 서버)

일단 수정없이 그냥 파이썬 파일을 실행해봤다.

플래그만 판다는 문구가 나온다. 원래 코드에는 "buy" : "clothes"라고 돼있으니 그런듯하다. 

한번 "flags"로 고쳐봤더니 또 에러가 떴다.

 

 

그래서 "flag"라고 했더니 그제야 플래그가 출력됐다.

crypto{sh0pp1ng_f0r_fl4g5}

'INCOGNITO 2022' 카테고리의 다른 글

RSA 암호화 알고리즘 분석  (0) 2022.08.13
Cryptohack - ASCII  (0) 2022.08.10