findme
Overview
- Overall difficulty for me (From 1-10 stars): ★☆☆☆☆☆☆☆☆☆
Background
Author: Geoffrey Njogu
Description
Help us test the form by submiting the username as test and password as test!
The website running here.
Enumeration
Home page:

In here, we see there's a login page!
Let's try test:test:


Nope. We need to try test:test!:


Now, what I would like to do is fire up Burp Suite, and proxying ALL the HTTP traffics.
Burp Suite HTTP history:

When we click the "test" button, it'll send a POST request to /login, with parameter username and password.
If we're authenticated, it'll redirect us to /next-page/id=cGljb0NURntwcm94aWVzX2Fs.
/next-page/id=cGljb0NURntwcm94aWVzX2Fs:

In this page, it has a JavaScript code:
setTimeout(function () {
// after 2 seconds
window.location = "/next-page/id=bF90aGVfd2F5X2UzMWJiNzZkfQ==";
}, 0.5)
After 2 seconds, it'll set the window object's location attribute to /next-page/id=bF90aGVfd2F5X2UzMWJiNzZkfQ==, which is redirecting us to that page.
/next-page/id=bF90aGVfd2F5X2UzMWJiNzZkfQ==:

Then, it'll redirect us to /home.
Hmm… I wonder what are those id GET parameter's value:
cGljb0NURntwcm94aWVzX2FsbF90aGVfd2F5X2UzMWJiNzZkfQ==
In that string, there's a = character, which is a base64 encoding's padding string.
Armed with above information, we can base64 decode it:
┌[siunam♥earth]-(~/ctf/picoCTF-2023)-[2023.03.15|19:57:49(HKT)]
└> echo 'cGljb0NURntwcm94aWVzX2FsbF90aGVfd2F5X2UzMWJiNzZkfQ==' | base64 -d
picoCTF{proxies_all_the_way_e31bb76d}
Boom! We got the flag!
- Flag:
picoCTF{proxies_all_the_way_e31bb76d}
Conclusion
What we've learned:
- Proxying HTTP Traffics