Level 0
Your goal is to connect to port 5842 on vortex.labs.overthewire.org and read in 4 unsigned integers in host byte order. Add these integers together and send back the results to get a username and password for vortex1. This information can be used to log in using SSH.
Note: vortex is on an 32bit x86 machine (meaning, a little endian architecture)
Translation
vortex.labs.overthewire.org의 5842번 포트에 연결해서 4개의 unsigned integer들을 차례로 읽어내는 것이 목표입니다. 그리고 그 integer들을 더해서 다시 호스트로 보내서 username과 password를 알아낼 수 있습니다. 그 정보를 이용해서 ssh에 접속할 수 있습니다.
Note: vorvex 서버는 32비트 x86 머신을 사용중입니다. (little endian 아키텍쳐)
풀이
우선 vortex 서버에 연결하기 위한 프로그램을 짜야 합니다.
socket 통신을 할 수 있는 모든 언어로 풀이 가능합니다.
여기서는 python을 사용해서 풀어보겠습니다.
일단 socket을 이용해서 vortex.labe.overthewire.org:5842에 연결해줍니다.
from socket import * from struct import * #for unpack() sock = socket(AF_INET, SOCK_STREAM) sock.connect(("vortex.labs.overthewire.org", 5842))
그리고, 4개의 정수를 읽어오고 더해줍시다.
from socket import * sum = 0 for i in range(4): #loop 4 times data = sock.recv(4) # 서버로부터 4바이트 읽기 sum += unpack("<I", data)[0]
서버는 little-endian 형식의 머신을 사용중이기 때문에 받아온 data를 "<I"를 사용하여 unsigned integer 형식으로 풀어준 후, sum에 더해줍니다.
이렇게 만들어진 sum을 다시 vortex 서버로 보내줍시다.
sock.send(pack("<I", (sum & 0xFFFFFFFF))) print sock.recv(512) sock.close()
우선 만들어진 sum 값을 8자리 hex 값으로 변환한 후, little-endian unsigned integer 형식으로 pack해줍니다.
그리고 sock.send를 사용하여 서버로 전송하면 서버가 username과 password를 응답해줍니다.
만들어진 python 파일을 실행하면 vortex level 1의 username과 password를 받아올 수 있습니다.