[LitCTF 2023]口算题卡
nssctf链接:https://www.nssctf.cn/problem/3876
nc之后提示完成100道加法和减法题目
使用如下脚本完成
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
|
from pwn import *
context.log_level = 'debug'
context.terminal = ["tmux","splitw","-v"]
p = remote('node4.anna.nssctf.cn',28002)
def calc():
p.recvuntil(b"What is ")
num1 = p.recvuntil(b" ")
op = p.recv(1)
p.recv(1)
num2 = p.recvuntil(b"?\n", drop=True)
success(num1)
success(op)
success(num2)
if op == b'-':
payload = int(num1) - int(num2)
elif op == b'+':
payload = int(num1) + int(num2)
success(payload)
p.sendline(str(payload))
data = p.recvuntil(b"\n")
success(data)
if data == b"Correct!\n":
return calc()
else:
p.interactive()
calc()
|
担心尾递归会有暴栈的可能,后面换成死循环
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
|
from pwn import *
context.log_level = 'debug'
context.terminal = ["tmux","splitw","-v"]
p = remote('node4.anna.nssctf.cn',28002)
def calc():
while True:
p.recvuntil(b"What is ")
num1 = p.recvuntil(b" ")
op = p.recv(1)
p.recv(1)
num2 = p.recvuntil(b"?\n", drop=True)
success(num1)
success(op)
success(num2)
if op == b'-':
payload = int(num1) - int(num2)
elif op == b'+':
payload = int(num1) + int(num2)
success(payload)
p.sendline(str(payload))
data = p.recvuntil(b"\n")
success(data)
if data != b"Correct!\n":
p.interactive()
break
calc()
|