PWNABLE——coin1

coding题目。思路是二分法。不多赘述。

from pwn import *
import pwnlib
import time
local = 0
if local:
    p = process("./333")
else:
    p = remote("pwnable.kr",9007)
for i in range(31):
    print p.recvline()
while True:
    n_c = p.recvline()
    print n_c  
    # 所有验证通过,进入交互状态
    if 'N=' not in n_c:
        p.interactive()
    n_c = n_c.split(' ')
    n = int(n_c[0][2:])
    c = int(n_c[1][2:])
    print n,c
    # 特别处理N=1,C=0的情况
    if n == 1:
        p.sendline('0')
        print p.recvline()
        continue
    data = range(n)
    for i in range(c)[::-1]:
        if len(data) > 2**i:
            data1 = data[0:2**i]
            data2 = data[2**i:]
            p.sendline(' '.join([str(j) for j in data1]))
            #print ' '.join([str(j) for j in data1])
            weight = int(p.recvline())
            #print weight
            if weight == (2**i)*10:
                data = data2
            else:
                data = data1
            if i == 0:
                print data[0]
                p.sendline(str(data[0]))
                res = p.recvline()
                print res
                # 这里用于处理chance过多的情况
                while 'Correct!' not in res:
                    p.sendline(str(data[0]))
                    res = p.recvline()
                    print res
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ml的职位 昂赛6轮。。。第一次面完筋疲力尽,连开车去机场的力气都没有了,后来昂赛基本都没有租车,都是uber 1...
    Super_Alan阅读 1,383评论 1 0
  • 近日,有媒体报道,为了解压,来自川渝的2000名大学生在某旅游景区内展开了西瓜大战,1小时砸掉的西瓜重达1吨。该行...
    力量时评阅读 308评论 0 1
  • 前几天,闺蜜突然说她拉黑了一个认识多年的朋友。 ‘’啊,为什么?(懵逼脸) 因为我不想再为他的理所当然而买单了。 ...
    喵柒阅读 432评论 0 0
  • 01 有一天同事跟我们吐槽,说她有一个远房亲戚得了白血病,为了筹手术费,家里亲戚、周遭同事朋友全都借了个遍,还在网...
    小酒9阅读 533评论 1 1