이번에 워게임이 사실 너무 쉽고 간단한거였어서, 추가공부로 어떤걸 해야할까 고민을 많이 했다. 풀었던 문제를 돌아보니 html의 사진 링크를 하나씩 눌러보며 찾던 게 리다이렉트를 연상시켜서 Open Redirect를 선정하게 되었다.
Open Redirect란?
외부의 해킹 공격자는 사용자 입력 값을 위조 또는 변조하여 일반 사용자를 악의적인 사이트로 이동시킨다. 일반 사용자의 입장에서 URL이 정상적인 주소와 악의적인 주소가 혼합된 형태를 띠기 때문에 일반 사용자는 해당 URL을 정상적인 주소로 착각할 가능성이 존재한다.
ex) https://www.normalsite.com?returnURL=http://www.baaaaaaaadsite.com/
Open Redirec가 위험한 이유
신뢰할 수 있는 url이 포함되어있어서 사용자가 전혀 의심하지 못하고 해당 사이트에서 요구하는 내용을 그대로 이행할 가능성이 높음. 혹은 링크 클릭 후 악성파일이 다운받아질 수 있음.
방어하려면?
권한이 있는 사용자에게만 입력할 수 있게 or URL이 안전한지 검증하는 절차 추가.
실습
#flask호출.
from flask import Flask, request, redirect
app = Flask(__name__)
@app.route('/login')
def login():
#url에서 ?next= 뒤에 있는 내용을 가져와서 target변수에 저장
target = request.args.get('next')
#target을 바로 실행시킴.
#여기서 target을 검사하는 과정이 없어서 굉장히 위험한 거.
return redirect(target)
if __name__ == '__main__':
app.run(debug=True)
위 코드를 실행시키면

여기서 준 url이 http://127.0.0.1:5000이니까 여기에 next붙여서 링크 만들어볼게요.
http://127.0.0.1:5000?next=https://awesomepiece.com/
위에 만든 링크를 크롬에다가 실행해볼게요.

엏? 안되네여
아ㅏㅏㅏㅏㅏ 함수가 login이잖아요. 그게 빠져서 안되는 거였습니다. 그리고 127.0.0.1이 아니라 localhost:라고 입력해야했네요..ㅎ
http://localhost:5000/login?next=https://awesomepiece.com/
이렇게 다시 해보겠습니다.
ㅎ 얘도 안되서 제미나이한테물어봤더니 next뒤에가 https://www.awesomepiece.com으로로 가야한대여...^^
www. 넣어서 해보겠습니다..!
최종 : http://localhost:5000/login?next=https://www.awesomepiece.com/


이렇게 잘 되는 것을 볼 수 있습니다~
'SWUFORCE > 워게임' 카테고리의 다른 글
| [Dreamhack]Find Real One (0) | 2026.05.18 |
|---|---|
| [Dreamhack]Basic_forensic_1 (0) | 2026.05.12 |
| [추가공부]png구조 (0) | 2026.05.12 |
| [Dreamhack]broken-png (0) | 2026.05.12 |
| [Dreamhack]video_in_video (0) | 2026.05.05 |