LEVEL 1

csrf-1

web
  • 문제 정보
  • 풀이 229
  • 난이도 투표 57
  • 질문 16
  • 최근 풀이자 7388
  • 댓글 205

문제 설명

여러 기능과 입력받은 URL을 확인하는 봇이 구현된 서비스입니다.

CSRF 취약점을 이용해 플래그를 획득하세요.

문제 수정 내역

2023.07.18 css, html 제공 및 read_url() 코드 일부가 변경되었습니다.

Reference

Client-side Basic

난이도 투표 57

질문 16

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
admin_notice_flag 쪽에서 이해가 잘 안되는게 있습니다.
@app.route("/admin/notice_flag") def admin_notice_flag(): global memo_text if request.remote_addr != "127.0.0.1": return "Access Denied" if request.args.get("userid", "") != "admin": return "Access Denied 2" memo_text += f"[Notice] flag is {FLAG}\n" return "Ok" if request.args.get("userid", "") != "admin": return "Access Denied 2" 두번째 조건문을 보고 /flag에서 <img src="/admin/notice_flag?userid=admin"> 넣어서 여차저차 풀었는데, 첫번째 조건문에서의 127.0.0.1이라는 주소가 무엇을 뜻할까요? 그리고 처음 문제를 받았을때 /admin/notice_flag 페이지에서 Access Denied가 뜨면 현재 주소가 127.0.0.1이 아니라는 뜻 아닌가요...? 그리고 왜 <img src="/admin/notice_flag?userid=admin">넣은것으로 바로 해결됬을까요? if request.remote_addr != "127.0.0.1":에서 뜻하는 주소의 의미를 알려주세요 if request.remote_addr != "127.0.0.1":의 조건문에서 주소가 127.0.0.1인 경우에만 두번째 조건문으로 들어가 userid를 확인하는 것이 아닌가요? <img src="/admin/notice_flag?userid=admin">를 넣으면 주소가 127.0.0.1로 되는 것일 까요? 아직 모르는것이 많아 어떤분이 보시기엔 너무나 당연한 것을 질문한 것일지 모르겠습니다. 답변해주시는 분들 감사드리며 드림핵내부에서 참고할만한 문서가 있을까요?
cycloid
LEVEL 1

csrf-1

web

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

arang
Open Beta Tester
출제된 지 19시간 만에 풀이 완료!

최근 풀이자 7388

oh1114
대표 업적 없음
Or_bit
대표 업적 없음
군바리
대표 업적 없음
흐흐흑
대표 업적 없음
오은혁
강의 수강: 1
s_hwan
대표 업적 없음
sdlakfjal
대표 업적 없음
soysoy
대표 업적 없음
fd020603
강의 수강: 1
제이앨런
대표 업적 없음

댓글 205

avatar
비가내림
대표 업적 없음
nice
avatar
Rootsquare
해결사
CSRF 실습 문제 1
avatar
jjw1126
꿈나무
야 기분좋다
kkjjww
대표 업적 없음
ㄹㅇ 쉽네
똘비
대표 업적 없음
워게임 처음해보시는 분들... 풀이는 꼭 문제 파일이 아닌 vm서버로 들어가셔요..ㅠㅠ -아무 생각 없이 문제파일 html로 들어가서 며칠 헤맨 사람으로부터-
Samsubong
대표 업적 없음
달콤한 딸기
valmung
대표 업적 없음
딸기
avatar
장근성
공부벌레
딸기
hykid1189
대표 업적 없음
딸기
1121311
대표 업적 없음
xss를 이해하고 풀이했다면 이 문제는 쉽게 풀 수 있네요