2018. 1. 15. 10:27, 워게임/Pwnable.kr
Netcat으로 접속을 해보면 위와 같은 간단한 게임을 볼 수 있습니다. binary search를 통해서 가짜 코인을 골라내면 되고, 아마 2^C >= N 임은 보장될 것입니다.(아닐 경우 가짜 코인을 판별해낼 수 없으므로)
코드는 아래와 같습니다. python 3 버전에 맞추어짰는데 python 2에서도 실행은 잘 됐습니다. 외부에서 pwnable.kr / 9007 로 접속해서 돌렸더니 계속 100번까지 가지 못하고 80번대에서 시간 초과가 떠서 어쩔 수 없이 pwnable.kr 내부에서 풀었습니다. 이 때 주소는 127.0.0.1로 변경해야 합니다.
import socket
import sys
import re
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('pwnable.kr', 9007)
sock.connect(server_address)
data = sock.recv(2048).decode()
print(data)
for i in range(100):
print(str(i)+"-th")
data = sock.recv(1000).decode()
arr = re.findall("\d+", data)
count = int(arr[-1])
number = int(arr[-2])
low = 0
high = number
print(count, number)
for i in range(count):
mid = (low+high)//2
send = ""
for j in range(low, mid+1): send += str(j)+" "
send += "\n"
sock.send(send.encode())
data = sock.recv(100).decode()
result = int(data)
if result % 10 == 0:
low = mid + 1
else:
high = mid
sock.send((str(low)+"\n").encode())
print(sock.recv(100).decode())
data = sock.recv(100).decode()
print(data)
'워게임 > Pwnable.kr' 카테고리의 다른 글
[Pwnable.kr] cmd1 (0) | 2018.01.15 |
---|---|
[Pwnable.kr] lotto (0) | 2018.01.15 |
[Pwnable.kr] blackjack (0) | 2018.01.15 |
[Pwnable.kr] shellshock (0) | 2018.01.15 |
[Pwnable.kr] mistake (0) | 2018.01.15 |
[Pwnable.kr] leg (0) | 2018.01.15 |
Comments