nssctf刷题之计算题

100道计算题

[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()
使用 Hugo 构建
主题 StackJimmy 设计