Challenge list
Linux-Deep Search. Discovering a Deeply Nested File
A single file containing the flag is hidden deep inside many nested directories. Use the find command to locate the…
Linux-Environment Variable Basics. Checking Shell Startup Variables
One of the environment variables set when the shell starts holds the flag. Check it with the env command or echo…
Linux Basics - Permissions and SUID
Learn basic Linux commands and file permissions. Use hints to find SUID and retrieve the flag.
SQL Injection 101
This login form has an SQL Injection vulnerability. Log in as admin without proper credentials and retrieve the flag.
Web-04. The robots.txt Trap
Websites often serve a robots.txt file for crawlers. In this challenge, check whether a file that robots.txt tells…
Web-05. Directory Listing Trap
When an Nginx server has directory index listing (autoindex) enabled, anyone can browse the full file listing of a…
Web-06. Forging HTTP Headers
This application grants access based on the value of a specific HTTP header. Even values the browser never sends by…
Web-07. Tampering with URL Parameters
This web application checks the value of the GET parameter key on the server side. The required parameter name and…
Web-08. Tampering with POST Data
The login form contains a hidden input field that is invisible in the rendered page. Inspect it with developer tools…
Web-09. The Weak Basic Auth Trap
A protected area is guarded by HTTP Basic Authentication, but the developer accidentally left the credentials in an…
Web-10. Peeking Behind a Redirect
Accessing a certain page immediately redirects you elsewhere. Browsers automatically follow redirects, so think about…
XSS Basics - Guestbook
This web application has a basic XSS vulnerability. Find where input is reflected in the guestbook. The flag is at an…
AES-ECB Mode Weakness
ECB leaks repeated block patterns. This introductory task first checks the difference between encryption and encoding.…
API Requests - Find the Highest-Profit Trade
When the container starts, a stock API begins running on http://localhost:9102 (you do not need to start server.py).…
Find Attack in Apache Logs
Analyze the Apache access.log (common format) to find traces of SQL injection. Tell which attacks succeeded and which…
Bash Scripting - Power of Automation
/app/numbers.txt contains numbers from 1 to 1000, one per line. Extract all numbers that satisfy these conditions and…
Flag Hidden in Excel Macro
Analyze the macro code embedded in the Excel workbook and find the hidden authentication code (the flag). Learn how to…
Git Detective - Lost Commit
/app/repo is a Git repository. A developer accidentally deleted a commit containing important information. Use git…
JSON Master - Data Extraction
/app/users.json contains information of 100 users in JSON format. Extract users that meet these conditions: - age…
Linux-02. Privilege Escalation via a Sudo-Allowed Vim
Check which commands a regular user can run via sudo without a password. A well-known GTFOBins technique can let you…
Linux-03. Reading Cron Configuration Files
This system has several cron configurations (/etc/cron.d, /etc/crontab, user crontabs, and more). Inspect each…
Linux-Cron Privesc. Hijacking a Writable Root Script
Check the permissions of a cron script that root executes periodically. If a regular user can write to it, think about…
Linux-Systemd. Checking a Service Unit's Environment Variable
A systemd unit file can set environment variables in its [Service] section. Inspect the registered service definition…
Linux-Symlink Maze. Navigating a Branching Path
Several directories are connected in a tangled web of symbolic links. Without being misled by decoy hint files, follow…