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

[分享]pwnable.kr coin1 day9

2021-1-10 22:03
7760

题目

解题过程

1. nc 连接

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

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

2. 编写 exp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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()

3. pwn

执行 exp,红框内为 flag。


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

收藏
点赞1
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回