LEVEL 2

crawling

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

문제 설명

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

문제 수정 내역

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

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

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

난이도 투표 47

질문 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 헤더를 확인하는 부분이 정확히 어떤 역할인지 모르겠습니다.
611

최근 풀이자 451

mnzy
대표 업적 없음
Bichon
대표 업적 없음
avatar
상혁
대표 업적 없음
hwr
대표 업적 없음
avatar
퐁치퐁치
대표 업적 없음
antiabscess
강의 수강: 1
avatar
레이튼교수
Open Beta Tester
unkn0vvn
대표 업적 없음
avatar
wooze
대표 업적 없음

댓글 29

avatar
yoobi
워게임 고인물
good
avatar
ssongk
공부벌레
이것이 ssrf..?
sinse100
대표 업적 없음
to hack is to think slow
avatar
st4nchion
대표 업적 없음
GG
Photojuice
공부벌레
엄청 고민 많이 했는데 결국은 로컬로 접속하도록 하는게 관건인데요 삽질결과 꼭 서버를 구축해야만 하는게 아니더라구요 근데 기존의 개념과는 사뭇 다른 취약점이 벡터 입니다. 코드쪽의 global과 admin 페이지 코드를 한번 잘 보시고 정말 모르겠으면 검색 한번 해보세요.. 저도 이 문제는 아 이렇게 풀면 되겠다 라고 전혀 생각하지 못했습니다.
LAMXkE
대표 업적 없음
이런게 있군요...
avatar
melan
질문 등록: 10
오...
y0un9du
워게임: 20
하..
Y0us
워게임: 50
진짜...
avatar
!4dog
대표 업적 없음
굿