Tags: python3 web 

Rating: 5.0

# Ad Network
## Description
Ad Network (Web, Baby, 50 pts)
Author: Alexander Menshchikov (@n0str)
We are so tired of advertising on the internet. It feels like it breaks the internet. Try to follow the ad, try to follow its rules.
Adnetwork website
There is a flag 1337 redirects deep into the network..

## Attack
Using the description of the challenge, my team thought we had to follow 1337 redirects and that the content-length would also be 1337.
I initially used Burp-suite to see what the response would be for the following query
`http://cold.adnetwork-cybrics2021.ctf.su/adnetwork`. The response confirmed that is was indeed a 301 response and that it redirected to a url that looked similar to
`http://cold.adnetwork-cybrics2021.ctf.su/discover-hour-able-eat/over-maybe-expect/start-usually-fall/test-beat-seek`.

## Python Script
I created a quick python script to the follow redirects and after the 1336th request, print the header and the content of the response. I ran into issues with the request library throwing an error after following 30 redirects. As a result, I manually followed the redirects instead of allowing the requests library to handle it.
```
import requests

count=0
resp = requests.get("http://adnetwork-cybrics2021.ctf.su/adnetwork",allow_redirects=False)
while True:
if count % 50 ==0:
print(resp.headers['Location'])
print(resp.status_code)
if count ==1400:
print("something went wrong")
break
if resp.headers['Content-Length'] != "1337" or count <1337:
resp=requests.get(resp.headers['Location'],allow_redirects=False)
count +=1
if count >=1337:
print(count)
print(resp.headers)
print(resp.content)

```
![ad-network-flag.png](images/ad-network-flag.png) Go to images/ad-network-flag.png to see the flag.

## After The Challenge
I saw a write-up which had a simpler python solution. It turns out that you can change the max amount of redirects that the request library will follow before throwing an error which would have simplified the above code.
`requests.Session().max_redirects=xxxx`

Original writeup (https://github.com/ccirpir/cybric-2021/blob/main/Ad%20Network.md).