ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-29
    Wargame/Webhacking.kr 2021. 12. 21. 23:50

    old-29

    파일을 업로드할 수 있다.

    파일 아무거나 제출하면 제출한 시간, 자신의 IP 주소, 파일명을 출력한다.

    FLAG는 다른 테이블에 있다는 것으로 보아, 현재 페이지는 제출한 시간, 자신의 IP 주소, 파일명을 칼럼으로 가지는 하나의 테이블인 것 같다.

    페이지 소스 코드를 살펴보면

    POST 방식으로 제출한다.

     

    Burp Suite로 time, ip, file이 삽입되는 순서를 확인할 수 있다.

    INSERT INTO 테이블이름 VALUES ('a', 'b', 'c'), ('d', 'e', 'f')의 형태로 다수의 데이터를 한 번에 넣을 수 있다.

    이 특징을 이용하여 순서를 먼저 알아보기 위해

    파일이 정상적으로 업로드되는 것으로 보아

    INSERT INTO 테이블이름 VALUES (파일 이름, 제출한 시간, IP 주소) 형태로 데이터를 삽입 함을 확인할 수 있다.

     

    ■데이터베이스 이름 찾기

    데이터베이스 이름은 database()로 찾을 수 있다.

    INSERT INTO 테이블 이름 VALUES ('woong', 1, 'IP 주소'), ((SELECT database()), 1, 'IP 주소') 형태로 만들기 위해

    데이터베이스 이름이 chall29임을 확인할 수 있다.

     

    ■테이블 이름 찾기

    information_schema : 메타데이터를 묶어 만든 테이블을 모은 데이터베이스로, 모든 데이터베이스에 대한 정보 저장함

    table_schema : 데이터베이스를 의미

    table_name : 테이블 이름

    INSERT INTO 테이블이름 VALUES ('woong', 1, 'IP 주소'), ((SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='chall29'), 1, 'IP 주소') 형태로 만들기 위해

    ※ group_concat을 사용하는 이유는 테이블 개수가 여러 개일수 있기 때문

    chall29 데이터베이스에 files와 flag_congratz 테이블 2개가 있는 것을 확인할 수 있다.

    FLAG를 구하기 때문에 flag_congratz 테이블인 것을 짐작할 수 있다.

     

    ■컬럼 이름 찾기

    INSERT INTO 테이블이름 VALUES ('woong', 1, 'IP 주소'), ((SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='flag_congratz'), 1, 'IP 주소');

    컬럼 이름이 flag인 것을 확인할 수 있다.

     

    ■flag 찾기

    INSERT INTO 테이블이름 VALUES ('woong', 1, 'IP 주소'), ((SELECT flag FROM flag_congratz), 1, 'IP 주소');

    FLAG 값을 구할 수 있다.

    'Wargame > Webhacking.kr' 카테고리의 다른 글

    <Webhacking.kr> old-39  (0) 2021.12.27
    <Webhacking.kr> old-28  (0) 2021.12.25
    <Webhacking.kr> old-25  (0) 2021.12.19
    <Webhacking.kr> old-33  (0) 2021.12.15
    <Webhacking.kr> old-26  (0) 2021.12.12
Designed by Tistory.