Hacking/Web.

UNION SQL Injection with SQLite3

2017. 10. 8. 02:57

 SQLite3가 기존의 RDBMS와 기본적인 컨셉 자체가 굉장히 다르기 때문에 SQLite3에서 처음 SQLi를 하면 감을 잡기 힘든 편이다.

 

 만약 SQLite를 사용하는 환경에서 별다른 필터링 없이 UNION Clause를 사용할 수 있다면 MySQL보다 간편하게 테이블의 구조를 알아낼 수 있다. SQLite에는 sqlite_master 테이블이 있는 이것이 SQLite에서의 인젝션 공격의 핵심이다.

 

asdf' union select sql, 1 from sqlite_master-- -

 

이 포스트에서는 루트미에 좋은 문제가 있어서 이 문제를 사용하여 설명을 하겠다.

 

 

👐 문제 스포가 있습니다 👐

 

 

이렇게 입력했더니 오류가 났다. fetch하는 column의 수는 2개임을 알 수 있다.

 

 

타 RDBMS와는 다르게 비교적 간단한 쿼리로 SQL이 실행되는 테이블의 구조를 가져올 수 있다. 그래서 MySQL에서 SQL Injection 할 때처럼 column 명을 알아오려고 똥ㄲ쇼를 펼치지 않아도 된다는 장점이 있다.

 

그리고 바로 어드민의 비밀번호를 알아내자. 

 

' union select username || '-' || password, 1 from users-- -

 

 

캬 오졌따리ㅋㅋㅋㅋ