본문 바로가기
정보보안(웹해킹)/SQLInjection

[php] Error-based SQLi 연습세팅 & 대응방안

by 끊임없는정진 2022. 11. 4.

 

▶ Error-based SQLi 연습할 때

데이터 베이스를 불러올 때 (데이터베이스 호출함수 ex. db_conn.php), 커넥션 에러를 출력하면서 php 에러를 출력하게 만든다.  또한, php 설정에서 에러를 출력하게끔 한다. 

1
2
3
4
5
6
7
8
<?php
if(!$conn){
    die("connection error! : ". mysqli_connect_error());
}
// 커넥션 에러 출력
 
ini_set('display_errors''1');
// php 에러 
cs

 

php설정은 또한 php.ini에서 수정할 수도 있다. phpinfo(); 함수로 나온 페이지를 확인하면 다음과 같이 화면이 출력되는 것을 확인할 수 있는데, 

 

'Loaded Configuration File'란 옆에 있는 php.ini 파일이 php 설정 파일이다. 해당 파일에 접속하게 되면 다음과 같이 세팅된 부분이 있는데, 

 

display_errors = Off 를 'On' 으로 바꿔주게 되면 오류를 출력하게 된다. 홈페이지에서 작은 따옴표 (') 를 입력해서 확인해봤을 때, 다음과 같이 오류메시지를 띄우면서 작동하지 않으면 성공이다.

 

 

▶ Error 메시지 출력 대응방안

- Apache의 Custom Error Responses 활성화

위 설정을 반대로 해주면 된다. PHP개발 환경에서 쓰는 미들웨어는 PHP이므로 php.ini 파일에서는 위에서 나온 설정을 'OFF'로, 데이터베이스 접속 파일에서 오류를 출력하는 부분은 주석처리를 해주면 된다. 

1
2
3
4
5
6
7
8
9
<?php
//if(!$conn){
//    die("connection error! : ". mysqli_connect_error());
//}
// 커넥션 에러 출력
 
ini_set('display_errors''0');
// php 에러 
 
cs

 

display_errors = Off 로 설정하면 오류를 출력하지 않는다.

 

- PHP의 magic_quotes_gpc 설정 활성화  : php5.4이상에서는 지원 종료

 

'정보보안(웹해킹) > SQLInjection' 카테고리의 다른 글

SQL injection in 'order by' clause  (0) 2022.12.09
SQL Injection WAF 우회기법  (0) 2022.11.21
Error Based SQL Injection  (0) 2022.11.03
Union SQL Injection  (1) 2022.11.03
SQL injection 과 id = 0  (0) 2022.10.26

댓글