ABOUT ME

Today
Yesterday
Total
  • web/uuid hell
    CTF/LA CTF 2023 2023. 2. 14. 01:45

    UUIDs are the best! I love them (if you couldn't tell)!

     

    UUID를 다루는 문제, UUID란 소프트웨어 구축에 쓰이는 식별자 표준으로 어떤 규칙으로 생성되는 값인데 서로 겹칠 확률이 매우매우매우 적다고 한다(그냥 고유한 UID라고 보면된다)

     

    주어진 사이트에 들어가보면 여러가지 값들이 있고 UUID들이 있다. 나한테 주어진 고유 ID febdbf90-abb2-11ed-aa64-67696e6b6f69가 있고 

     

    쿠키값에도 적재되어 있다. 사이트는 이쯤보고(소스는 볼거없다) 같이 제공된 ZIP 파일내의 파일들을 보면

     

    Docker 파일 플래그값은 FLAG 환경변수에 있음을 알 수있다.

     

    그리고 제일 중요한 server.js 파일을 위에서부터 차례차례보면

     

    randomUUID함수 이 함수로 UUID를 생성한다. 

     

    UUID가 없거나 36의 길이가아니고 -a-f0-9 형태가 아니면 새로운 UUID를 만들고 이를 쿠키값으로 저장한다

    그 다음으로는 getUsers 함수인데 이를 보면 adminuuid은 위에서 생성한 UUID들에 앞에 "admin"을 붙이고 md5 해시한 값이고, 일반사용자의 UUID는 그대로 MD5 해시한 값임을 알 수 있다. 

     

    그리고 /경로에서 쿠키값이 admin의 uid면 플래그값을 출력하게한다

     

    /createadmin에서 post요청이 전송되면 새 UUID를 만들고 배열에 추가하는데 50개가 넘으면 하나씩 shift해준다(배열 끝에있는값 없앰)

     

    이정도면 알아야할 것은 다 알았다. adminuuid를 알아낸뒤 쿠키에 그 값을 넣으면 플래그값이 나온다는 것이다. 먼저 UUID.v1의 키생성과정을 먼저 알아야한다. UUID는 버전에 따라 생성방법이 다른데 해당 문제는 v1 버전을 사용하고 있다. v1은 TimeStamp와 MAC주소를 기반으로 하는데 Timestamp는 1582년 10월 15일 자정을 기준으로 100ns마다 1씩 증가하는 값이라고한다(퍼옴) 쉽게말하면 현재 시간을 참조한다고 보면된다. 그리고 네트워크 카드의 MAC주소를 같이 기반으로 값을 생성한다고한다. 이 문제에서는  6개의 바이트 node를 쓰고 clockseq값을 사용한다.

     

    저게 뭔소린가 싶을 수 있는데 위의 randomUUID함수의 node값이 UUID 뒤에붙는 6자리 맥주소이고 clockseq값은UUID.v1가 현재 시간값을 이용한다고 했는데 이게 정확히 뭐라고 설명해야할지 나도 모르겠다 .그냥 키값을 생성하는데 사용하는 시간과 관련된 설정값중 하나라고 이해합시다.

     

    이곳저곳 검색하다가 내 UUID 값을 decode 해주는 사이트를 찾아서 내 UUID 값을 넣어보았는데

    function randomUUID() {
        return uuid.v1({'node': [0x67, 0x69, 0x6E, 0x6B, 0x6F, 0x69], 'clockseq': 0b10101001100100});
    }

    Clockseq값 010101001100100(10852)

    node값들 모두 일치하는 것을 볼 수 있었다

     

    그럼 우리는 이제 UUID값들이 어떻게 생성되는지, 설정 값들이 뭔지 알았으니 admin의 UUID를 만들 수 있다.

     

    사실 여기까지가 내가 혼자 알아낸 내용들인데 이 이후로 파이썬으로 값을 이것저것 해봤으나 안되서 포기했다

     

    혹시 풀이를 찾는 사람들을 위해 writeup을 공유하겠다

     

    https://ctftime.org/writeup/36173

     

     

     

    'CTF > LA CTF 2023' 카테고리의 다른 글

    web/metaverse  (0) 2023.02.14
    misc/EBE  (0) 2023.02.13
    misc/CATS!  (0) 2023.02.13
Designed by Tistory.