서브웨이

pwnable.kr coin1 풀이 본문

Pwnable/pwnable.kr

pwnable.kr coin1 풀이

샌드위치메이커 2020. 8. 18. 12:30

아이가 게임을 하고싶답니다. 일단 접속해보죠.

게임이 진짜 게임일 줄은 몰랐네요...

대충 읽어보니 코인중에 가짜 코인이 하나 있고 진짜코인은 무게가 10, 가짜는 무게가 9랍니다. 그래서 무게를 비교해가면서 정해진 횟수 안에 가짜코인을 찾는것을 100번 반복하는데 이것을 1분안에 해야합니다.

 

그냥 스크립트를 짜라는 얘기네요. 일단 해봅시다. 그냥 간단하게 반반씩 나눠가며 확인을 하면 되지 않을까 싶습니다.

# coding: utf-8
from pwn import *

r = remote('pwnable.kr',9007)

r.recvuntil("- Ready? starting in 3 sec... -")

for k in range(100):    
	r.recvuntil("N=")
	num = int(r.recvuntil(" "))
	r.recvuntil("C=")
	chance = int(r.recvuntil("\n"))
	
	bottom = 0
	top = num
	
	for i in range(0, chance):
		mid = (bottom + top)/2
		sendstr = ""
		for j in range(bottom, mid+1):
			sendstr += str(j)
			sendstr += ' '
		r.sendline(sendstr)
		ans = int(r.recvline())
		if ans%10 == 9:
			top = mid
		else:
			bottom = mid + 1
			
	r.sendline(str(bottom))
	print r.recvline()
	
r.interactive()

다른분들의 코드를 참고하며 짰습니다.

그런데 동작은 하는데 생각보다 느려서 시간안에 다 못끝내는 문제가 발생합니다.

 

그럼 문제에서 말한것처럼 서버에 접속해서 그곳에서 스크립트 파일을 만들어서 실행하면 될거같습니다.

그래서 이전문제 주소로 들어가서 /tmp에 디렉토리 하나를 만들고 거기서 실행했더니

성공이네요.

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

pwnable.kr lotto 풀이  (0) 2020.08.21
pwnable.kr blackjack 풀이  (0) 2020.08.19
pwnable.kr shellshock 풀이  (0) 2020.08.17
pwnable.kr mistake 풀이  (0) 2020.08.14
pwnable.kr leg 풀이  (0) 2020.08.13
Comments