-
-
[分享]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期)
赞赏
他的文章
- [原创]pwnable.kr horcruxes 10754
- [分享] pwnable.kr blukat 9974
- [分享] pwnable.kr unlink 9473
- [分享] pwnable.kr asm 10671
- [分享] pwnable.kr memcpy 10450
看原图
赞赏
雪币:
留言: