본문 바로가기
Hacking/wargame.kr

[wargame.kr] Question 18. dmbs 355

by 알거음슴 2021. 7. 19.

Question 18. dmbs 355

문제

SQL injection Challenge! (injection)

- thx to dmbs335

 

 

 

풀이

문제 접근 시 내용이 담겨져 있는 표와 원하는 값을 찾을 수 있는 검색창 그리고 source를 볼수있는 링크가 제공된다.

 

 

소스코드를 분석해보면 SQL Injection 취약점이 있는걸 확인할 수 있는데 이유는 이러하다.

 1) 입력 가능 변수는 $where_clause, $cols, $query_parts, $search_cols, $keyword, $operator

 2) $sol 의 값이 지정된 값(subject, content, writer)이 아니면 빈 문자열을 반환한다.

 3) 값이 있다면 $query_parts 가 정상 작동 값이 없다면 if($col) 구문을 스킵.

 4) if($col)이 실행되지 않으면 $query_parts 에 입력한 값이 $where_clause로 적용됨

 5) 66번줄 {$where_clause} -> {$query_parts} 로 적용되며 where 문에 SQL Injection이 가능함.

 

$col에 지정된 값 (subject, content, writer) 을 제외하고 $query_parts=’sql injection’ 을 진행시 66번줄의 select * from board where {$query_parts=’sql injection’} order by idx desc 의 형식으로 mysql_query가 적용이 가능하다.

 

 

search_cols=a&query_parts=0 union select 1,2,3,4 #

해당 문제는 get_method 방식을 지원함으로 URL 뒤에 해당 변수값을 입력하니 성공적으로 column수가 확인되었다. 이어서 DB 정보들을 획득해보자.

 

 

search_cols=a&query_parts=0 union select 1,2,table_name,4 from information_schema.tables #

테이블들의 정보를 출력한다 Th1s_1s_Flag_tbl 이라는 테이블이 수상하다 기억해두자.

 

 

search_cols=a&query_parts=0 union select 1,2,column_name,4 from information_schema.columns #

이번엔 컬럼들의 정보를 출력한다, f1ag 컬럼이 있는걸 확인할 수 있다.

 

 

search_cols=a&query_parts=0 union select 1,2,f1ag,4 from Th1s_1s_Flag_tbl #

성공적으로 플래그를 얻을 수 있고 제출하면 문제를 통과할 수 있다.