반응형

이 문제 같은 경우에는 소켓통신을 통한 간단한 숫자 게임이였습니다.

간단히 룰을 설명하면 가장 작은 숫자나 가장 큰 숫자를 찾아서 데이터값을 보내주면 다음으로 진행하는 방식이였습니다.


이걸 풀기 위해, 데이터 값을 받았을 떄 max나 min이 데이터 안에 들어있다면 Sorting을 통해서 정렬하여 첫번째 값을 보내주면 끝나겠죠.


아래는 파이썬으로 간단히 만들어본 소스입니다.


from socket import *


sock = socket(AF_INET,SOCK_STREAM)

sock.connect(('number.quals.seccon.jp',31337))


i=1


while True:

    data = sock.recv(2048)

    data_list=data.split('\n')

    splited= data_list[0].split(', ')

    print i, 'Attempt...'

    print "list :: " , len(splited) , "\n"

    print splited , "\n"

    if 'max' in data_list[1]:

        for i in range(0,len(splited)):

            for k in range(0,len(splited)):

                if(int(splited[i]) >= int(splited[k])):

                    temp = splited[i]

                    splited[i] = splited[k]

                    splited[k] = temp

        sender = splited[0]

        print data_list[1] + sender , "\n"

    elif 'min' in data_list[1]:

        for i in range(0,len(splited)):

            for k in range(0,len(splited)):

                if(int(splited[i]) <= int(splited[k])):

                    temp = splited[i]

                    splited[i] = splited[k]

                    splited[k] = temp

        sender = splited[0]

        print data_list[1] + sender , "\n"

    elif 'Congra' in data_list[1]:

        sock.send(sender)

        

    if sock.send(sender):

        i+=1

    

sock.close()


이렇게 하시면 값을 얻을 수 있게 됩니당.

'Write up' 카테고리의 다른 글

[dctf 2020] writeup  (0) 2020.12.10
Write up  (0) 2014.10.04
블로그 이미지

KuroNeko_

KuroNeko

,