ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ctf-d] fore1-hit-the-core
    2021/Write-Ups 2022. 2. 22. 23:43

    4팀 박윤진

    fore1.core 파일을 받을 수 있다.

    core 파일은 프로그램이 특정 시점에 작업 중이던 메모리 상태를 기록한 것으로

    보통 비정상적으로 종료됐을 때 만들어진다고 한다.

     

    cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}

     

    BASE64 인코딩같은 (유독) 긴 문자열을 발견할 수 있다.

    그런데 아니었다...

     

    AeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}

     

    보니까 대문자가 ALEXCTF를 완성하는 것을 확인할 수 있었고

    이를 토대로 소문자를 없애보면..

    ALEXCTF{K834385P__7H3_0087D_ 099875_087}

    가 나오는데 영 플래그같이 생기진 않았다. 그나마 7H3가 THE로 확실히 leet를 활용했다는 단서를 알 수 있다.

    또 다른 규칙성을 찾아보자면, AeqacLtqazEigwiXobxrCrtuiTzahfFreqc 가 4글자 간격으로 반복된다는 것이다

    이를 토대로 노가다하거나 파이썬 코드를 작성하여 4번째 글자만 출력하도록 해보면...

    string = 'bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv'
    count=0
    while True :
      print(string[count], end='')
      count+=5
      if count >= len(string) :
        break

    K33P_7H3_g00D_w0rk_up 이 나온다.

    ALEXCTF{K33P_7H3_g00D_w0rk_up}

     

    추가적으로 가장 처음인 K를 찾을 때 b부터 시작해서 4개를 건너뛰어야 하는지 / 4개를 건너뛰고 K를 선택해야 하는지

    애매하긴 한데, 둘 다 해보고 더 플래그같은 문자열을 제출하면 되겠다.

     

    해당 문제로 얻을 수 있는 관점:

    ① 가장 기본적으로 strings 사용해보기

     플래그 형식이 인코딩 되어 있을 수 있다.

    ③ 플래그 형식 { } 은 생각보다 많이 쓰이지 않는다. 주목해볼 것 - {.*} 로 검색

    ④ 인코딩 외 간단한 퍼즐 형식으로도 플래그를 얻을 수 있다. (가장 기본: 규칙성 찾기)