Red, Blue, Target 환경을 통한 해킹 실습

공격 3 — SQL Injection (수동 + SQLmap)

TungTung0000 2026. 7. 7. 15:49

 

1. phpinfo에서 DB 정보 수집

$ curl http://$TARGET/info.php | grep -i "mysql\|pdo"

 - curl 명령어를 통해 php의 환경 정보를 출력 후 mysql, pdo라는 단어만 출력하는 명령어

• 확인 결과
 - PHP 정상 동작, mysqli 활성화, PDO 활성화, MySQL 연동가능

 

 

2. 수동 SQLi 테스트 (URL 파라미터)

공격 명 설명 취약 여부
Union-based SQL Injection UNION SELECT를 이용해 다른 테이블의 데이터를 함께 조회  
Error-based SQL Injection DB 오류 메시지를 이용하여 정보를 획득  
Boolean-based Blind SQL Injection 참(True)/거짓(False)에 따른 응답 차이로 정보를 추출  
Time-based Blind SQL Injection 시간 지연 함수를 이용하여 참/거짓을 판단  
개발 정보 노출 개발 정보에 관해 노출이 되는 취약점 O

 

 

단계1. 정상 요청 확인

 

 

단계2. 페이로드 삽입 후 결과 확인

특수문자를 이용해 에러를 확인

  •  200 상태코드

 - 입력이 문자열로 처리되거나 적절하게 이스케이프처리가 되어 정상 실행 가능성 있음

 

 

  • 500 상태코드

- 서버 내부 오류 발생, SQL 구문 오류, 애플리케이션 예외 등의 다양한  원인 발생가능성 있음

 

  • # 400 상태코드

- 400 상태코드와 함께 아파치의 버전 정보, 포트 번호가 노출되어 개발 정보 노출 취약점도 존재한다고 판단

 

 

 

 

 

2-1.  Union-based SQL Injection

1) 파라미터에 ' 를 입력하여 의도적인 오류를 냈을 경우 500 상태코드와 함께 서버에러를 나타내는 것을 확인 가능했으나 DB에 관한 정보는 확인 불가

 

 

 

 

 

 

2-3. Boolean-based Blind SQL Injection

각각의 SQL Injection 페이로드를 삽입해서 응답 확인했으나 차이없음

1) id=1 AND 1=1--"

 

2) id=1 AND 1=2--"