247CTF에서 제공하는
쉬운 난이도의 웹해킹 문제이다.
생각보다 쉽지는 않은것 같다.
문제페이지에 들어가면
이렇게 단순하게 서버의 소스코드만 나와있다.
Python flask 기반으로 만들어 졌으며
os.urandom(24)로 SECRET_KEY 라는걸 만들어 쿠키로 사용하고 있다.
이 SECRET_KEY 값이 무엇인지 맞춰서
/flag 페이지로 이동할때 request 인자로 넣어줘야
session['flag'] 를 만날 수 있게 되는데,
현실적으로 os.urandom(24)을 때려맞추는건 불가능하다.
실제로 /flag 에 접근을 시도하면
Incorrect secret key! 라는 문구가 출력된다.
쿠기와 관련된 문제이니
F12를 눌러 개발자 도구의 네트워크 탭을 통해 session 쿠키값을 확인해 본다.
뭔가 알수 없는 긴 문자열로 되어있는데
이걸 디코딩 해본다.
flask에서 쿠키값을 만들때는 특별한 방법으로 만든다.
flask-unsign 이라는 도구를 이용해서 디코딩 해볼 수 있다.
pip3 install flask-unsign 이라고 입력하면 다운로드가 가능하다.
다운받고나서 flask-unsign 이라고 입력하면 실행이 된다.
flask-unsign 을 실행시키면서 -d -c 옵션을 준다.
-d는 decode로 base64로 인코딩 된 쿠키값을 디코딩해준다.
-c는 디코딩할 쿠키값을 지정해주는 옵션이다.
이렇게 명령어를 수행하면 아래쪽에 디코딩된 쿠키값이 출력되는 것을 볼 수 있다.
flag 쿠키값이 바로 플래그이다.
'워게임 > 247CTF' 카테고리의 다른 글
[247CTF] AN IMPOSSIBLE NUMBER - MISC / 정수 오버플로우 / C (167) | 2023.10.01 |
---|---|
[247CTF] THE TEXT EDITOR JAIL - MISC / Vim (158) | 2023.09.28 |
[247CTF] ERROR REPORTING PROTOCOL - 포렌식 / Wireshark / Tshark (176) | 2023.09.26 |
[247CTF] COMPARE THE PAIR - 웹해킹 / MD5 Magic Hash (162) | 2023.09.23 |
[247CTF] TRUSTED CLIENT - 웹해킹 / Javascript (176) | 2023.09.21 |