AlpacaHack Logo

Challenges

Sign InSign Up

Rows:

CHALLENGEAUTHORS

SOLVES

(CURRENT)

SOLVE RATE

(AT CONTEST TIME)

AlpacaHack 2100

Daily AlpacaHack

admin

1761

solves

-

1574

solves

-

Daily AlpacaHack

934

solves

-

AlpacaHack Round 2 (Web)

628

solves

Top 28%

= 84/300 users

Daily AlpacaHack

623

solves

-

Daily AlpacaHack

606

solves

-

SECCON Beginners CTF 2024

542

solves

Top 73%

= 683/928 teams

Daily AlpacaHack

409

solves

-

Daily AlpacaHack

406

solves

-

Daily AlpacaHack

375

solves

-

Daily AlpacaHack

367

solves

-

echo

AlpacaHack Round 1 (Pwn)

363

solves

Top 32%

= 56/174 users

Daily AlpacaHack

349

solves

-

Daily AlpacaHack

342

solves

-

Daily AlpacaHack

337

solves

-

Daily AlpacaHack

331

solves

-

Encoding Basics

Daily AlpacaHack

331

solves

-

🐈

Daily AlpacaHack

323

solves

-

Bars

Daily AlpacaHack

318

solves

-

108

Daily AlpacaHack

306

solves

-

Rows:

func-array

Daily AlpacaHackTopic: Function PointerReleased: May 6, 2026

111 solves
Pwn
Easy

by

trimscash

trimscash

Array of Alpaca function pointers 🦙🦙🦙🦙🦙

Beginner Hint (AI-translated)
  • This problem belongs to the Pwn category, specifically Pwnable (Binary Exploitation).
  • The goal is to launch a shell by executing the win function in a remote environment.
  • The asm volatile("mov $0,%spl"); in the win function is a process to simplify the problem. When calling the system function, rsp must be a multiple of 16. So, to simplify the problem here, we make rsp a multiple of 16 by setting the lower byte of rsp to 0. With this, we can execute the win function without worrying about it in this case. Reference
  • alpaca_functions is an array of function pointers placed on the stack.
  • When a function is called, the return address, the address to return to the original function, is placed on the stack.
func-array.tar.gz
descriptionsolveswriteups