워게임/247CTF

[247CTF] SECURED SESSION - 웹해킹 / Flask

SecurityMan 2023. 9. 19. 11:00

 

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 쿠키값이 바로 플래그이다.

반응형