← All concepts
Remote code execution

Understanding Remote code execution

What it is

Remote code execution is the top of the ladder: making the server run code you chose. It usually arrives through something more modest — an upload that lands somewhere executable, a template that evaluates input, a deserialization gadget, an injection that reaches a shell — escalated until the process does your bidding.

How you approach it

  1. Find the feature that treats your input as more than data — a file that gets executed, a template that gets evaluated, a value that reaches a shell.
  2. Get the smallest possible thing to run first: a value echoed back, a sleep you can time. Confirm execution before you build the payload.
  3. The flag is a file on the host that no web response is meant to include. Run the command that reads it.

How it gets fixed

A feature evaluated input that should have been inert, giving a path to command execution on the host. A minimal proof confirmed it before a full payload read the flag off the filesystem. The fix removes the evaluation entirely — no user input to a template engine, an interpreter or a shell.

Practise it

Every lab in the Remote code execution category drills exactly this. Start at Apprentice and work up.

Practise it

ExpertRemote code execution

An upload that lands in an executable path

Turn a foothold into commands running on the server itself.

50 pts · 90 minStart →
ExpertRemote code execution

A file type check you can talk past

Turn a foothold into commands running on the server itself.

50 pts · 90 minStart →
MasterRemote code execution

Template injection to command execution

Turn a foothold into commands running on the server itself.

100 pts · 180 minStart →
MasterRemote code execution

From deserialization gadget to shell

Turn a foothold into commands running on the server itself.

100 pts · 180 minStart →
MasterRemote code execution

A dependency confusion package that runs on install

Turn a foothold into commands running on the server itself.

100 pts · 180 minStart →
MasterRemote code execution

Argument injection into a called binary

Turn a foothold into commands running on the server itself.

100 pts · 180 minStart →