首页
社区
课程
招聘
[分享]pwnable.kr coin1 day9
发表于: 2021-1-10 22:03 8692

[分享]pwnable.kr coin1 day9

2021-1-10 22:03
8692

查看题目描述
题目描述
在一堆真硬币中找出一个假硬币,真假硬币只有重量不相同,真硬币重量为 10,假硬币重量为 9。在 60 秒内找 100 次。
输出案例如下

N 为硬币数目,C 为猜测次数
可以看出 C 每次都大于 log 以 2 为底 N 的对数,所以考虑用二分法找假硬币。

执行 exp,红框内为 flag。

from pwn import *
 
p = remote('localhost', 9007)
p.recv()
 
for i in range(100):
    N, C = p.recv().split(' ')
    N = int(N.split('=')[1])
    C = int(C.split('=')[1])
 
    log.info('N = ' + str(N) + ' C = ' + str(C))
 
    start = 0
    end = N
 
    while start <= end:
        mid = (start + end) / 2
 
        tmpList = [str(j) for j in range(start, mid + 1)]
        tmpList = ' '.join(tmpList)
 
        p.sendline(tmpList)
        msg = p.recv().rstrip()
 
        if msg.find('Correct') != -1:
            log.info(msg)
            break
 
        weight = int(msg)
 
        if weight % 10 == 0:
            start = mid + 1
        else:
            end = mid
 
print p.recv()
from pwn import *
 
p = remote('localhost', 9007)
p.recv()
 
for i in range(100):
    N, C = p.recv().split(' ')
    N = int(N.split('=')[1])
    C = int(C.split('=')[1])
 
    log.info('N = ' + str(N) + ' C = ' + str(C))
 
    start = 0
    end = N
 
    while start <= end:
        mid = (start + end) / 2

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//