coin这道题需要连到pwnable.kr的服务器上去执行命令 然而写入文件到tmp后并不能执行 会报错 name ‘remote’ is not defined 我研究了一番 笑死我了
首先是查资料感觉有人写了个pwn.py在/tmp
于是ls -lah /tmp/pwn.py
发现是col用户
于是以col身份连上去删掉这玩意
然后还是报错 感觉/tmp/pwn有这个目录
于是 ls -lah /tmp/pwn 创建者是uaf
连上去继续删掉目录
本来以为这样就好了 于是又执行了一遍还是报错。。。
进入交互界面 看看
>>> dir(pwn)
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>> pwn.__name__
'pwn'
>>> pwn.__doc__
>>> pwn.__file__
'pwn.pyc'
>>>
uaf@pwnable:/tmp$ ls -lah pwn.pyc
-rw-rw-r-- 1 passcode passcode 98 Dec 9 22:28 pwn.pyc
然后再用passcode身份连上去删掉这玩意就好了
coin的代码 简单二分法
from pwn import *
import re
r = remote('0',9007)
print(r.recvuntil('starting'))
for i in range(100):
r.recvuntil('N')
s = r.recv()
N,C = re.findall("=(\d+) C=(\d+)",s.decode())[0]
N = int(N)
C = int(C)
left = 0
right = N - 1
def func(start,end):
return " ".join([str(x) for x in range(start,end+1)])
for i in range(C):
mid = (left + right)//2
ans = func(left, mid)
r.sendline(ans)
weight = int(r.recv().strip())
if weight == (mid - left + 1) * 10:
left = mid + 1
else:
right = mid
r.sendline(str(left))
print(r.recvline())
r.interactive()