R136A1

[CyBRICS 2021] Ad Network (Web, Baby, 50 pts) 본문

CTF

[CyBRICS 2021] Ad Network (Web, Baby, 50 pts)

r136a1x27 2021. 7. 25. 20:00

 

사이트에 들어가면 정적 웹페이지가 나온다

Ad Network라고 했으니 Adblock을 끄고, 왼쪽 상단에 어울리지 않는 움짤이 보인다

마우스를 올리면 브라우저의 왼쪽 하단에 어디로 연결되는지 보여준다.

그리고 클릭하면 계속 Redirect되는지 얼마 간 로딩이 없다가 일정 페이지에서 멈춘다

일반적으로 브라우저의 Redirect 제한은 30회이고, 문제에서 알 수 있다시피 1337번을 Redirect해야하기 때문에 쿠키를 삭제해도 동일한 결과가 나올 것이다.

 

python 크롤링 경험으로 request 모듈을 사용한 코드가 이미 존재했고, 조금만 변형해줬다.

allow_redirects를 True로 두면 일반적인 브라우저같이 30회에서 멈춰버리므로,

그 때 그 때 header에서 url을 받아와서 갱신하고 다시 요청을 보내는 식으로 시스템을 짰다.

넉넉하게 1500번 redirect되도록 하고, 프로그램을 실행시킨다

import requests

headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"}

if __name__ == '__main__':
    url = input("input url to expand for safe: ")
    for i in range(1500):
        res = requests.get(url, headers=headers, allow_redirects=False)
        url = res.headers['Location']
        number = str(i)
        print(number+": "+url)

딱 1337 redirect 되자마자 더 이상 Redirect할 곳이 없다며 오류를 출력하고, 해당 링크로 들어가보면 플래그를 준다.


또는......... redirects 한도를 늘려주면 된다 https://ctftime.org/writeup/29367

import requests
import urllib3

session = requests.Session()
session.max_redirects = 10000

url = "http://adnetwork-cybrics2021.ctf.su/adnetwork"
r = session.get(url, allow_redirects=True)

print(r.text)
print(r.url)

'CTF' 카테고리의 다른 글

Cyber Grabs CTF 0x03 Junior Write ups  (0) 2022.02.07
CTFtime.org 사용법  (0) 2022.01.23
2021 SWING CTF  (0) 2021.08.08
Comments