247CTF 에서 제공하는
EASY 난이도의 MISC 문제
MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.
반응형
문제 설명을 읽어보면
특정 숫자를 맞춰야만 플래그를 얻을 수 있는것 같다.
import SocketServer, threading, random, time
class ThreadedLotteryServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
pass
class LotteryHandler(SocketServer.BaseRequestHandler):
def handle(self):
secret = random.Random()
secret.seed(int(time.time()))
winning_choice = str(secret.random())
self.request.sendall("Can you guess the number to win the flag lottery?\n")
your_choice = self.request.recv(1024).strip()
if winning_choice == your_choice:
self.request.sendall("Congratulations you won the lottery! Have a flag!\n")
self.request.sendall("%s\n" % open('flag.txt').readline().rstrip())
else:
self.request.sendall("Nope! The winning number was %s, better luck next time!\n" % winning_choice)
return
if __name__ == '__main__':
SocketServer.TCPServer.allow_reuse_address = True
server = ThreadedLotteryServer(("0.0.0.0", 5000), LotteryHandler)
server_thread = threading.Thread(target=server.serve_forever)
server_thread.daemon = True
server_thread.start()
server.serve_forever()
파이썬 코드와 함께
서버 주소/포트가 주어진다.
코드를 보면
time 을 시드로 해서 랜덤한 값을 생성하는데,
이 값을 맞춰야만 플래그를 획득할 수 있다.
시험삼아 nc를 이용해 접속해봤는데
맞춰야 하는 숫자가
소수점 12자리의 소수였다..
이걸 때려맞춘다는 것은 불가능하기 때문에
다른 꼼수를 써야만 한다.
생각해낸게
time 을 시드로 랜덤한 값을 만들고 있으니,
서버의 코드와 똑같은 코드를 작성해
요청할 때 보내버리면 되지 않을까 싶었다.
import socket, random, time
hostname = '도메인'
port = 포트
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
data = s.recv(1024)
print(data)
secret = random.Random()
secret.seed(int(time.time()))
winning_choice = str(round(secret.random(),12))
s.sendall(bytes(winning_choice.encode("utf-8")))
print(winning_choice)
data = s.recv(1024)
print(data)
data = s.recv(1024)
print(data)
s.close()
Python 을 이용해 이렇게 작성할 수 있다.
소캣을 생성하고,
문제에서 주어진 코드와 같이
winning_choice 값을 생성한 뒤 보낸 뒤
결과값을 확인하는 것이다.
코드를 실행시키면
플래그를 획득할 수 있다.
반응형
'워게임 > 247CTF' 카테고리의 다른 글
[247CTF] TRY AND CATCH - MISC / Python (190) | 2023.10.20 |
---|---|
[247CTF] FORGOTTEN FILE POINTER - 웹해킹 / PHP / LFI (184) | 2023.10.16 |
[247CTF] THE ENCRYPTED PASSWORD - 리버싱 / IDA (200) | 2023.10.10 |
[247CTF] THE MORE THE MERRIER - 리버싱 / HxD (137) | 2023.10.08 |
[247CTF] SENSITIVE SERVER MEMORY - MISC / Metasploit (150) | 2023.10.06 |