pwnable.kr [coin1]
Mommy, I wanna play a game!
(if your network response time is too slow, try nc 0 9007 inside pwnable.kr server)
Running at : nc pwnable.kr 9007
首先访问,看看是什么东西。
由题意得,我们需要使用二分法,来交互得到最后的假硬币。
相当于pwntools的练习。
但是代码在本地跑ping太高最多60个就GG
查了别人的答案要放在本地/tmp
下跑才行。
贴代码
from pwn import *
import re
def func(l,r):
x=str(l)
for p in range(l+1,r+1):
x=x+' '+str(p)
return x
r=remote('0',9007)
print(r.recvuntil('- Ready? starting in 3 sec... -'))
for j in range(100):
m=r.recvuntil('N=',timeout=10000)
print(m)
m=r.recvline()
pp=re.findall("\d+",m)
print pp
p=int(pp[0])-1
c=int(pp[1])
l=0
for i in range(c):
x=(p+l)/2
pay=func(l,x)
print pay
r.sendline(pay)
ans=int(r.recvline())
print'ans=',ans
if (ans==(10*(x-l+1))):
l=x+1
else:
p=x
#print 'x=',x
if(l==p+1):
l=p
print 'p=',p
print 'l=',l
print 'i=',i
if((ans %10)==9):
pay=str(l)
else:
pay=str(p)
print pay
r.sendline(pay)
print(r.recvline())
print(r.recvline())
print(r.recvline())