R136A1
[CyBRICS 2021] Ad Network (Web, Baby, 50 pts) 본문
사이트에 들어가면 정적 웹페이지가 나온다
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