정보보안공부

[Root-Me] SQL injection - String 본문

Web/RootMe

[Root-Me] SQL injection - String

Steady_sp 2020. 2. 18. 11:10

이문제도 마찬가지로 DB가 sqlite를 사용하고 있다. Blind Sql 로도 가능하지만 Union Sql도 가능하기 때문에 Union Sql Injection으로 풀어보겠다.

 

[컬럼 개수 확인]

- order by 또는 union select 를 이용해 조회가능한 컬럼 개수가 몇개인지 확인한다.

order by 2을 할경우 정상적으로 조회됨을 확인

 

order by 3을 할경우 정상적으로 조회되지 않음을 확인

 

[테이블 개수 확인]

- count를 이용해 테이블 개수를 확인한다.

count를 이용해 테이블 개수가 2개임을 확인

 

[테이블 조회]

- limit를 이용해 테이블을 하나씩 차례대로 조회한다.

첫번째 테이블 이름이 news 임을 확인

 

두번째 테이블 이름이 users 임을 확인

 

[컬럼 조회]

- limit 또는 like 구문을 이용해 테이블의 컬럼을 조회한다.

users테이블의 컬럼이 username, password 임을 확인

 

[데이터 조회]

- 문자열을 이어주는 연산자( || %7c%7c )를 사용하여 데이터를 조회한다.

- "아이디(공백)비밀번호" 형태로 데이터가 조회된다.

users 테이블의 데이터가 조회됨을 확인

 

#테이블 조회

select tbl_name from sqlite_master

 

#컬럼 조회

select sql from sqlite_master where sql like '%테이블이름%'

 

#관련 함수

length, substr, unicode, char, ||(%7c%7c), limit

 

'Web > RootMe' 카테고리의 다른 글

[Root-Me] SQL injection - Filter bypass  (0) 2020.02.18
[Root-Me] SQL injection - Blind  (0) 2020.02.18
[Root-Me] SQL injection - Numeric  (0) 2020.02.18
[Root-Me] PHP Filters  (0) 2020.02.13
[Root-Me] Insecure Code Management  (0) 2020.02.13
Comments