ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HCAMP][Misc] CanU_esCafe
    CTF write_up/2019 HCAMP CTF 2019. 8. 27. 12:42

     

    일단 먼저 프로그램이 어떻게 돌아가는지 확인하기 위해 nc를 연결해 보겠습니다.

     

    1234566을 base64 encoding을 해서 값을 전달하면 2가지의 오류가 나옵니다.

    그중에서 맨 마지막에 ; 이 빠졌다는 이야기가 나옵니다.

     

    해당 파일을 열어보면 .java 파일 하나와 .py파일 하나가 들어있습니다.

    코드를 확인해 보면 다음과 같습니다.

     

     

    그리고 .java 파일의 코드를 확인해 보겠습니다.

     

    코드를간략하게 분석해서 이야기 하자면 

     

    필터링이 되고 있고 flag가 필터링 되고 있는 것으로 보아 flag 파일이 있다는 것을 짐작할수 있고, 입력 받은 base64 encoding 된 문자열을 디코딩 해서 code 에 담고 java파일의 main에 있는 /* CODE */를 우리가 입력한 값의 디코딩 값을 넣어서 실행합니다. 그러니까 결국 자바로 작성한 os 명령어를 직접 넣을수 있는 코드를 base64 encoding을 한 값을 값으로 넘기면 Clear!가 되는 문제 입니다.

     

    일단 현재 디렉터리에 무엇이 있는지를 먼저 확인하는 것이 급선무 입니다. 

    그 이유는 우리가 찾는 flag가 현재 디렉터리에 없다면 경로를 작성해야 하기 때문입니다.

     

    java로 파일을 읽는 방법은 java.io.File 이 있습니다.

    또한 ./ 디렉터리에 있는 객체를 추출해서 file에 바로 넣기 위해 for each를 이용해서 문제를 풀어 보겠습니다.

     

    사용할 코드는 아래와 같습니다.

    for (java.io.File file : new java.io.File("./").listFiles()) {

        System.out.println(file.getName());

    }

     

     

    flag가 바로 현재 디렉터리에 있는 것을 확인했으니 바로 출력해보겠습니다.

    JDK 7버전 이후로 부터 지원하는 java.nio.file.* 패키지를 이용해서 쉽게 파일을 읽어 오겠습니다.

     

    사용할 코드는 아래와 같습니다.

    for(String result : java.nio.file.Files.readAllLines(java.nio.file.Paths.get("./fl"+"ag"))){

        System.out.println(result);

    }

     

     

    예외 처리를 해줘야 하는것같습니다.

     

    사용할 코드는 아래와 같습니다.

    try{

        for(String result : java.nio.file.Files.readAllLines(java.nio.file.Paths.get("./fl"+"ag"))){

            System.out.println(result);

        }

    }catch(Exception e){}

     

     

    Flag : HCAMP{1ts_Jav4_C0ff33_t1me_XD_G00d_J@B!!}

     

     

     

    'CTF write_up > 2019 HCAMP CTF' 카테고리의 다른 글

    [HCAMP][Web] js  (0) 2019.08.30
    [HCAMP][Forensic] Party of Base64  (0) 2019.08.27
    [HCAMP][Forensic] Lorem Lock  (0) 2019.08.27
    [HCAMP][Forensic] Welcome to hacking  (0) 2019.08.27
    [HCAMP][Misc] 01010101  (0) 2019.08.27

    댓글

Designed by Tistory.