LEVEL 2

crawling

web
  • 문제 정보
  • 풀이 47
  • 난이도 투표 72
  • 질문 5
  • 최근 풀이자 591
  • 댓글 34
해당 문제는 Dreamhack CTF Season 1 Round #12 에 출제된 문제입니다.

문제 설명

드림이는 웹 크롤링 사이트를 구축했습니다.
크롤링 사이트에서 취약점을 찾고 flag를 획득하세요!

문제 수정 내역

2024.02.13 풀이자에게 제공되는 파일 일부가 변경되었습니다.

난이도 투표 72

질문 5

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
왜 서버의 공인 IP 를 직접 입력하면 접근이 안되는건가요??
#app.py import socket import requests import ipaddress from urllib.parse import urlparse from flask import Flask, request, render_template app = Flask(name) app.flag = 'FLAG' def lookup(url): try: return socket.gethostbyname(url) except: return False def check_global(ip): try: return (ipaddress.ip_address(ip)).is_global except: return False def check_get(url): ip = lookup(urlparse(url).netloc) if ip == False or ip =='0.0.0.0': return "Not a valid URL." res=requests.get(url) if check_global(ip) == False: return "Can you access my admin page~?" for i in res.text.split('>'): if 'referer' in i: ref_host = urlparse(res.headers.get('refer')).netloc if ref_host == 'localhost': return False if ref_host == '127.0.0.1': return False res=requests.get(url) return res.text @app.route('/admin') def admin_page(): if request.remote_addr != '127.0.0.1': return "This is local page!" return app.flag @app.route('/validation') def validation(): url = request.args.get('url', '') ip = lookup(urlparse(url).netloc) res = check_get(url) return render_template('validation.html', url=url, ip=ip, res=res) @app.route('/') def index(): return render_template('index.html') if name=='main': app.run(host='0.0.0.0', port=3333) 일단 SSRF와 Open Redirection을 활용해서 문제를 풀기는 했습니다. 근데 이 방법이 안 되는 이유를 정확히 모르겠네요. 문제 코드이고, index 페이지에서 그냥 서버 주소를 넣으면 어디서 막히는건지 잘 모르겠어요. 뭔가 False 하고 뜨는것도 아니고 그냥 한참 요청이 처리되지 않다가 오류가 표시되네욤 그리고 referer 헤더를 확인하는 부분이 정확히 어떤 역할인지 모르겠습니다.
611h
LEVEL 2

crawling

web

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

zero829
CTF Third Place
출제된 지 1시간 만에 풀이 완료!

최근 풀이자 591

cmdking
대표 업적 없음
avatar
senhikunana
대표 업적 없음
레모나
대표 업적 없음
avatar
winky
대표 업적 없음
김민수1
웹해킹 입문
avatar
Geonu
대표 업적 없음
avatar
l3mnt2010
대표 업적 없음
avatar
zh13u
대표 업적 없음
avatar
kq5y
Second Person
avatar
x3ric
대표 업적 없음

댓글 34

avatar
Geonu
대표 업적 없음
DNS Rebinding rbndr.us
오늘의 나보다 나아진 내일을 희망하며
avatar
swap
.HACK 2025 참가자
몰랐던 지식을 알 수 있어 좋았습니다
avatar
Rootsquare
바탈리온
어라라... 필터가 뭔가 이상하다...?
웅머
웹해킹 전문가
이게 왜 레벨 2?
avatar
yoobi
워게임 고인물
good
avatar
ssongk
2024 Invitational Contenders
이것이 ssrf..?
sinse100
대표 업적 없음
to hack is to think slow
avatar
st4nchion
대표 업적 없음
GG
Photojuice
공부벌레
엄청 고민 많이 했는데 결국은 로컬로 접속하도록 하는게 관건인데요 삽질결과 꼭 서버를 구축해야만 하는게 아니더라구요 근데 기존의 개념과는 사뭇 다른 취약점이 벡터 입니다. 코드쪽의 global과 admin 페이지 코드를 한번 잘 보시고 정말 모르겠으면 검색 한번 해보세요.. 저도 이 문제는 아 이렇게 풀면 되겠다 라고 전혀 생각하지 못했습니다.