Skip to content

Commit a191072

Browse files
committed
Add problem from zer0pts ctf
1 parent aa44ce1 commit a191072

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

2020/zer0pts-2020/nibelung/solve.py

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
from pwn import *
2+
from sage.all import *
3+
4+
def get_matrix(proc):
5+
ans = []
6+
for i in range(6):
7+
x = proc.recvline().strip("\n []")
8+
ans.append(map(int, x.split(", ")))
9+
return ans
10+
11+
proc = remote('13.231.224.102', 3002)
12+
13+
proc.recvline()
14+
15+
flag = get_matrix(proc)
16+
p = int(proc.recvline().strip().split()[-1])
17+
18+
print flag
19+
20+
R = IntegerModRing(p)
21+
22+
curr_pow = 1
23+
ans = Matrix(R, matrix.zero(6))
24+
25+
for b in range(0, 512, 8):
26+
print b
27+
curr = [0 for i in range(36)]
28+
for i in range(6):
29+
for j in range(6):
30+
curr[i*6 + j] = (flag[i][j] >> b) % 256
31+
proc.recvuntil("> ")
32+
proc.sendline("2")
33+
proc.recvuntil("Data: ")
34+
payload = b64e(''.join(map(chr, curr)))
35+
proc.sendline(payload)
36+
proc.recvline()
37+
resp = Matrix(R, get_matrix(proc))
38+
ans += 2**b * resp
39+
40+
print ans
41+
42+
sice = ''
43+
for i in range(6):
44+
for j in range(6):
45+
sice += chr(int(ans[i][j]))
46+
47+
print sice
48+
49+
# zer0pts{r1ng_h0m0m0rph1sm_1s_c00l}

0 commit comments

Comments
 (0)