ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • session
    개인공부/드림핵 2024. 12. 21. 23:14

    이번 문제의 경우 admin 계정으로 로그인하여 FLAG를 획득하는 문제이다.

     

    문제 파일을 다운로드 후 분석을 진행한다.

     

    [문제 풀이]

    1. 문제 파일 분석

     

    해당 코드들을 통해 users 딕셔너리에 guest, user, 그리고 admin id에 대한 비밀번호가 지정되어 있는 것을 확인 할 수 있다.

     

     

    또한 세션 id를 4바이트 난수로 생성 후 16진수로 변환하여 session_storage에 저장하는 것을 확인 가능하다.

     

    하지만 아래를 확인하면 이상한 점을 찾을 수 있다.

     

     

    바로 로그인 계정이 admin일 경우 1바이트 난수 생성 후 16진수로 변환하여 session_storage에 저장한다는 것이다.

     

    1바이트는 8비트이다. 그렇기에 admin 계정의 session id 경우의 수는 256개이다.

    이정도 수는 브루트포스가 가능하다.

     

    브루트포스는 두 가지 방법으로 가능하다

    첫번째는 Burp Suite를 이용한 방법, 두번째는 파이썬 코드를 이용한 방법이다.

     

    2. Exploit 1

    우선은 계정을 알고 있는 guest로 로그인을 시도한다.

     

    로그인 요청을 POST 방식으로 서버에 보내고 성공하여 302 리다이렉트가되며 아래와 같은 요청을 인터셉트 할 수 있다.

     

     

    위와 같이 session id가 부여된 상태에서 해당 요청을 Intruder 기능으로 보낸 후 페이로드 세팅을 아래와 같이 해준다.

     

     

     

    Cookie의 sessionid 의 값이 $로 둘러쌓여 해당 부분에 페이로드가 대입되도록 설정한 후 attack을 시작한다.

     

    공격을 확인하다보면 아래와 같이 반환 길이가 다른 응답을 확인 가능하다.

     

     

    이때 Response를 눌러 확인 시 FLAG 값 확인이 가능하다.

     

     

    3. Exploit 3

    파이썬을 이용하는 방법으로 request 모듈을 이용하는 방법이다.

     

    이 방법은 직접 코드를 구현해야한다.

     

     

    이때 위와 같이 POST 요청을 하면 결과가 나오지 않는 것을 확인 가능한데 이는 / 경로에서 POST가 허용되지 않은 메소드이기 떄문이다.

     

     

    그렇기에 GET 메소드로 변환 후 다시 시도 시 정상적으로 FLAG 값 획득이 가능하다.

     

     

     

    '개인공부 > 드림핵' 카테고리의 다른 글

    abcdefg-who  (0) 2024.12.23
    Grand Theft Auto  (0) 2024.12.22
    Find The Lost Flag  (0) 2024.12.21
    Carve Party  (0) 2024.12.09
    web-misconf-1  (0) 2024.12.08
Designed by Tistory.