오일러 라이센스 - DCTF 22

2304 단어 ctfs
저는 볼로냐 대학의 팀DCTF 2022과 함께 Ulisse에 참여했습니다.

Bookstore.java 챌린지는 다음과 같이 명시했습니다.

Someone who doesn't care about bandwidth usage decided to package both the server and client binaries in a single file... The server of course is meant to run on linux, and the client on Windows.



다음을 포함하는 PowerShell 파일 eulers_license.ps1 을 얻습니다.
  • base64로 인코딩된 서버 코드를 포함하는 binary_linux var.
  • 역시 base64로 인코딩된 클라이언트 코드를 포함하는 binary_win var입니다.

  • 리눅스 바이너리



    Linux 바이너리는 뒤집기가 매우 쉽습니다. 실제로 그것을 디코딩함으로써 우리는 거대한 SQLi 취약점이 있는 파이썬 서버를 얻습니다.

    lice = request.args.get("license_key")
    query = "SELECT * FROM license_keys WHERE license_key = '" + lice + "';"
    


    우리는 ' OR 1=1 --와 같은 기본 SQLi를 진행하고 플래그의 첫 번째 부분을 가져올 수 있습니다(실제로는 두 번째 부분).

    _python_is_easy_to_reverse}



    윈도우 바이너리



    Windows exe는 되돌리기가 조금 더 어렵습니다. ghidra로 살펴봄으로써 다음과 같아야 함을 이해합니다.
  • 10자리 숫자
  • 소수
  • 오일러
  • 와 관련이 있습니다.

    우연과 시험의 조합으로 우리는 오일러가 발견한 소수인 숫자 2147483647 를 발견합니다.

    이 입력을 클라이언트에 제공하면 다음과 같은 출력이 제공됩니다.

    Enter eulers license key: 2147483647
    dctf{2147483647
    Failed to contact euler.dragonsec.si for license confirmation...
    


    dctf{2147483647_python_is_easy_to_reverse}

    좋은 웹페이지 즐겨찾기