LEVEL 2

crawling

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

문제 설명

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

문제 수정 내역

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

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

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

난이도 투표 55

질문 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

최근 풀이자 550

웅머
웹해킹 전문가
잠뽀
강의 수강: 10
오이김치
대표 업적 없음
뭉크의절규
대표 업적 없음
skyepodium
워게임: 20
D4VID
강의 수강: 10
avatar
GiuNash
시니어
옴니포텐
질문 등록: 5
avatar
Bang3Kyu
웹해킹 입문
yydd
대표 업적 없음

댓글 30

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