1. 문제 소개
드림핵의 409번. session-basic
https://dreamhack.io/wargame/challenges/409
쿠키와 세션으로 인증 상태를 관리하는 간단한 로그인 서비스입니다.
admin 계정으로 로그인에 성공하면 플래그를 획득할 수 있습니다.
플래그 형식은 DH{...} 입니다.
2. 풀이 방법
이 문제는 내가 처음 풀어본 워게임 문제이다
문제와 해설 하단에 있는 접속 정보에서 서버 생성부터 해줘야한다
시간이 조금만 지나면 웹해킹 문제 링크가 생성되는데
잠깐이지만 기다리는 동안 문제 파일을 다운 받고 압축을 해제해둔다
플라스크 파일이 하나 들어있다
생성된 링크에 접속하면 단조로운 웹 페이지가 보인다
어떻게 풀어야하는지 전혀 감을 잡을 수 없었다
이 문제는 쿠키와 세션 개념을 익히기 위한 문제로
풀이에는 별 의미 없는 화면이므로 로그인 페이지로 들어가면 된다
로그인 하려고 보니 우리는 알고 있는 아이디와 패스워드가 없다
힌트를 얻기 위해 아까 다운 받았던 소스파일을 연다
코드에서 user 부분을 확인해보면
id와 pw가 한 쌍으로 구성된 딕셔너리가 있다
여기서 힌트를 얻어 guest - guest 로 접속한다
(id : guest / pw : guest)
로그인은 성공했으나 admin 계정이 아니라서 flag는 아직 알려주지 않는다
해당 페이지에서 개발자 도구를 열거나
edit this cookie 라는 구글 크롬 브라우저의 확장앱을 사용하면
guest 계정에 대한 쿠키를 확인해볼 수 있다
이때 우리는 admin 계정의 쿠키를 탈취한다면
로그인이 가능하고 flag를 얻을 수 있을 것이라는 생각이 든다
코드에서 @app.route( ) 구간의 내용이 웹 사이트에서 하나의 페이지를 구성하고
괄호 내부에는 home, login, /admin 등의 파라미터가 들어갈 수 있는데
@app.route( /admin) 페이지 코드를 보고
생성했했던 드림핵 워게임 가상서버 주소 끝에 /admin 을 추가해서 접속한다
그러면 {"쿠키" : "admin"} 형태의 딕셔너리 하나가 출력되는데
이 쿠키가 admin 계정의 쿠키이다
이 쿠키를 복사해서 게스트의 쿠키를 admin의 쿠키로 바꿔주면 된다
바꾸는 방법은 간단하다
개발자 도구를 열어서 application에 들어가거나
edit this cookie 확장앱을 사용하여
기존의 guest 쿠키를 지우고 입력해주면 된다
변경 후 다시 확인해보면
성공이다
admin으로 접속되었고 flag를 알 수 있다
DH{ } 부분을 복사해서 정답으로 입력하면 끝!
'[ Computer Security ] > Web Security' 카테고리의 다른 글
[웹보안] 웹 보안 정책, 조직, 솔루션 (0) | 2024.08.26 |
---|---|
[웹보안] 웹 서버 보안 (0) | 2024.08.26 |
[웹보안] 웹 보안의 기본 요소 (2) | 2024.08.26 |
[워게임/웹해킹] Dreamhack 267 . devtools-sources (0) | 2024.05.11 |
[웹보안] 인터넷 해킹과 보안 연습문제 8장 (0) | 2024.04.29 |
[웹보안] 인터넷 해킹과 보안 연습문제 7장 (0) | 2024.04.29 |
[웹보안] 인터넷 해킹과 보안 연습문제 6장 (0) | 2024.04.29 |