본문 바로가기

WARGAME/Pwnable.kr

pwnable.kr coin1

NC로 접속을 해보면 위처럼 나온다. 위조된 동전을 찾으면된다.

실제 동전의 무게는 10이고 위조된 동전은 9라는 값이 나오게된다.

총 100개의 위조 동전을 찾으면 되는데 제한시간이 30초다. 코딩을해야한다.

알고리즘을 하나 사용하는데 binary search를 이용하면 풀 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-
import time
import socket
 
def search(num, count):
    first = 0
    last = num-1
 
    for x in range(count+1):
        mid = (first+last)/2
        data = " ".join([str(x) for x in range(first, mid+1)])
        s.sendall(data+"\n")
 
        data2 = s.recv(1024)
        if len(data2) == 0:
            data2 = s.recv(1024)
 
        if "Correct!" in data2:
            print data2
            break
 
        data3 = int(data2)
        if data3 != (mid-first+1)*10:
            last = mid
        else:
            first = mid+1
 
 
= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("pwnable.kr"9007))
 
lines = s.recv(512).splitlines()
print lines
time.sleep(1)
s.recv(1024)
time.sleep(3)
 
for x in range(1):
    data1 = s.recv(100)
    print data1
    data1 = data1.split(" ")
    num = data1[0].replace("N=""").replace(" """)
    cnt = data1[1].replace("C=""").replace(" """)
    search(int(num), int(cnt))
 
print s.recv(1024)
cs

변수가 많이 필요했는데 변수 명 때문에 헷갈려서 시간 날렸다



'WARGAME > Pwnable.kr' 카테고리의 다른 글

pwnable.kr fix  (0) 2017.01.12
pwnable.kr dragon  (0) 2017.01.11
pwnable.kr simple login  (0) 2017.01.06
pwnable.kr passcode  (0) 2016.03.29
PWNABLE KR ascii_easy  (0) 2016.03.28