SQL injection - UNION3(Examining the database3)

2020. 12. 27. 20:08문제연습/bs_Training

반응형

 

본 티스토리 블로그는 PC에 최적화되어 있습니다.

모바일 유저분들은 아래 네이버 블로그를 이용해 주세요.

 

Lab: SQL injection attack, listing the database contents on non-Oracle databases

 

Examining the database2 문제에 해당하는 Lab: SQL injection attack, ... on MySQL and Microsoft는

이전에 풀었던 문제와 동일하기에 cheetsheet를 잘 읽어 보고 문법만 맞춘다면

바로 풀리는 문제이므로 따로 해설을 진행하지 않도록 하겠습니다.

 

 

1. 문제 내용

이번 문제도 저번에 풀었던 문제와 비슷하게 관리자로 로그인해야 하는 문제입니다.

다만, 계정 정보가 존재하는 테이블 이름을 주지 않았고 오라클 DB도 아니기에

기존 문법과는 약간 다를 수도 있습니다.

 

바로 cheetsheet를 참고하도록 하겠습니다.

헐... 사실상 정답을 알려주었습니다.

일단 테이블의 이름을 모두 불러오고 그중에 usernames, password 데이터를 찾도록 하겠습니다.

 

 

2. Attack

- 반환되는 칼럼 수

반환되는 칼럼 수는 2개인 것으로 확인되었습니다.

 

 

- 테이블 정보 유출

 

일단 cheetsheet 데로 한번 인젝션 해 보도록 하겠습니다.

filter?category=' union SELECT null, * FROM information_schema.tables--

흠, 일단 테이블 정보를 유출려고 하는데 에러가 발생하였습니다.

구글링을 통해 MySQL의 테이블 정보를 검색하는 방법을 알아보니

select table_name을 줘야 검색이 된다고 합니다.

 

 

MySQL 테이블 목록 구하기 (SHOW TABLES, information schema)

테스트에 사용된 MySQL 버전: 8.0.22 하지만 MySQL 5.x 버전에서도 사용 가능하다. 목차 SHOW TABLES를 이용하는 방법 SHOW TABLES는 표준 SQL이 아니지만 사용하기 편하다는 장점이 있다. 현재 사용 중인 DB의

jason-heo.github.io

 

 

다시 수정해서 쿼리를 날려본 결과입니다.

filter?category=' union SELECT null, table_name FROM information_schema.tables--

공격이 성공했습니다.

이제 유출된 table 정보를 기반으로 계정 정보를 유출시켜야 하는데

어디 테이블로 데이터가 전달되는지 아직 모르는 상황입니다.

 

 

추가적인 정보를 얻기 위해 burp suite로 로그인 시도 시 서버와의 통신 내역을 확인해봐야겠습니다.

어떤 테이블인지는 몰라도 id, pw가 각각 user name, password로 넘어간다는 것을 알 수 있습니다.

이 데이터들이 어떤 테이블에서 username, password 데이터를 가지고 있는지 알아내야 합니다.

 

 

테이블을 추정하려고 하는데, user 이름이 들어가는 테이블을 필터링하니

확인해 볼 테이블이 너무 많습니다.

개수만 16개입니다....

힌트를 조금 얻기 위해서 문제 관련 포럼에 검색했더니 다음과 같은 정보가 올라와 있었습니다.

 

 

테이블 이름이 users_????? 꼴이라는 것입니다.

다시 한번 검색해보니 해당 형태의 테이블이 존재합니다.

 

 

방금은 information 스키마의 테이블 정보를 보았다면 이제 우리가 볼 정보는 칼럼 정보이므로 다음과 같이 쿼리를 날려 주도록 하겠습니다.

 

 

filter?category=‘ union select column_name, null from information_schema.columns where table_name = ’users_xabrks‘--

이제 계정 정보를 유출시켜 보도록 하겠습니다.

아래와 같이 인젝션을 주면 우리가 원하는 관리자 계정을 알아낼 수 있습니다.

 

 

filter?category=' union select username_brinhr, password_rwbqji from users_xabrks--

관리자 계정 정보를 유출시켰습니다.

한번 로그인해보도록 하겠습니다.

 

 

성공적으로 로그인 되었습니다.

이번 문제는 얕은 sql 문법 지식 때문에 삽질이 많았습니다...

 

다음 시간에도 이어서 웹 해킹 문제를 풀어보도록 하겠습니다.

긴 글 읽어 주셔서 감사합니다.

 

반응형

'문제연습 > bs_Training' 카테고리의 다른 글

Authentication - Brute forcing2  (0) 2021.01.07
Authentication - Brute forcing1  (0) 2021.01.07
SQL injection - UNION3(Examining the database1)  (0) 2020.12.26
SQL injection - UNION3  (0) 2020.12.25
SQL injection - UNION2  (0) 2020.12.25