웹 해킹 & 시큐어 코딩

웹 해킹 & 시큐어 코딩 (1)

홍시뗄레 2025. 1. 10. 17:28

APMSetup 개념 및 설치

APM? 
Apache. web server. 정적 자원을 처리한다.
PHP: server side script. 
MYSQL-RDBMS
+LAPM (L: linux)

연동을 한번에 처리할 수 있는 것: APMSetup. 
윈도우 환경에서 쉽게 구동할 수 있는 프로그램이다. 

C드라이브 안에 APM_Setup 파일이 있을 것임. 
htdocs: 웹 디렉터리. 자원이 있음.
자료를 업로드하면 url을 통해 접근이 가능하다.

URL에 127.0.0.1을 입력하고 이 화면이 뜨면 정상적으로 설치 완료된 것이다.

 

그럼 이제 실제 php가 구동되는지 확인해보자.

임의로 test.php 파일을 만들어보았다.

생성 후 클릭해서 들어가본다. 

클릭해서 안에 이렇게 코드를 짠 후, 아까 있던 URL 옆에다가 test.php를 연달아서 입력해본다.

그럼 이렇게 정상적으로 설치되어있음을 확인할 수 있다.

텍스트가 정상적으로 출력되었다. 

php.ini 파일 내 magic_quotes_gpc 설정

원래 APM_Setup 파일에 있는 php.ini를 실행해보면 이런 파일이 있다.

그중에 magic_quotes_gpc가 있다. 여기서 gpc는 get, post, cookie를 의미한다. escape처리가 된다고 한다. 

Magic Quotes 처리를 하면 이스케이프 처리가 된다고 한다. 탈출이라는 의미. 무엇을 탈출하냐? SQL 문법에서 싱글 쿼트가 있다. ': 문장의 시작과 끝을 알리는 기능. 

문장 내에 'I'm~ 이렇게 하면 싱글 쿼트가 끝나게 된다. 이걸 처리하기 위해 이스케이프 처리가 필요하다. 일반 문자의 기능으로 변환하는 것이 이스케이프 처리라고 한다. 처리하는 방법은 \'

단순히 문자로 처리하게 된다. 이 설정이 On이라고 되어 있는 것은, gpc로 이스케이프 처리가 된 상태로 데이터가 입력된다는 뜻이다. 이스케이프가 자동으로 되기 때문에 이런 문제로 예기치 못한 기능이 생겨버린다.

보통 Off로 변경되어 있는 게 많다.

Off로 수정하자. 그러나 Off로 설정한다고 해서 바로 설정이 바뀌는 것이 아니다. 

$_GET은 Get방식으로 입력받겠다는 의미. 파라미터에 value를 적어놓은 것이다.

다시 사이트를 실행해보면 되지 않는다. 왜냐하면 get 방식으로 value라는 파라미터를 갖기로 했기 때문이다.

옆에 추가로 ?value=test를 입력해야 화면에 test가 출력된다.

value=test'

라고 쓰게 되면 화면에 test\'로 출력된다. 왜냐하면 magic_quote_gpc가 on으로 처리되어 있기 때문이다.

우리가 off로 변경하고 저장해두었지만 아파치를 재기동해야 한다. 

두 가지 방법이 있다. APM Setup 모니터 프로그램을 통해서 작동되고 있는 아파치 서버를 stop했다가 다시 start버튼이 활성화될 때 클릭하는 방법이다. 

stop 누르고 start을 다시 누르면 재기동된다.

참고로 나는 APMSetup Monitor가 자꾸 화면에 나타나지 않아서 애먹었는데, 이 버튼을 누르고 아이콘을 누르면 잘 작동되니 공익을 위해서 알리겠다.

그렇게 되면 \'가 아니라 '로 정상적으로 나온다. 이렇게 하면 magic_quote_gpc가 off로 바뀌었음을 확인할 수 있다.

 

두번째 방법도 있지만 난 첫번째 방법으로도 재기동이 돼서 두번쨰 방법은 알아보지 않겠다. (귀찮음)