CodeEngn Malware04 풀이
Wargame | CTF/Reversing

CodeEngn Malware04 풀이

4번문제입니다. APM환경에서 SQL Injection을 막기위한 PHP설정파일 옵션 설정방법을 묻고 있습니다.

먼저 문제에 나온 용어들을 알아보도록 하겠습니다.

 

먼저 APM이란 Apache + PHP + MySQL 의 줄임말입니다. APM 소프트웨어가 존재하는 것이 아니라, 3가지가 연동되어 운영되도록 만든 환경을 APM이라고 합니다. Apache MySQL PHP와 호환성이 좋기 때문에 주로 세 프로그램을 묶어 패키지 형태로 사용합니다

Apache란 정식 명칭은 Apache HTTP server로 웹 서버 프로그램입니다. 웹 서버란 웹 서비스를 제공해주는 서버인데, 예를 들어 사용자가 사이트에 접속하면 웹 서버에게 HTML 파일을 요청합니다. 요청을 받은 웹 서버는 클라이언트 컴퓨터에 HTML 파일을 제공하면서 사용자는 화면으로 웹 페이지를 볼 수 있게 됩니다.

PHP 란 웹 프로그래밍 언어로, 사용자가 보는 웹 페이지를 구성하는 언어이다. HTML의 경우 웹 브라우저에서 소스를 해석해 보여주지만, PHP 는 서버에서 해석하여 HTML 코드로 만들어 브라우저에게 전달해주는 것입니다.

MySQL SQL 데이터베이스 서버이다. MySQL 없이 PHP 만으로도 간단한 웹 페이지를 만드는 것은 가능합니다. 하지만 웹 페이지에 사진, 동영상, 게시판 등 훨씬 많은 데이터들을 저장하고 보여주고 할 때 데이터베이스와의 연동이 필요하기 때문에 MySQL을 사용하는 것입니다.

 

출처 : http://to-paz.tistory.com/8

APM의 동작과정을 간단히 그림으로 나타낸 것입니다.

SQL Injection 이란 응용 프로그램 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 코드 인젝션 공격 방법입니다.

문제는 PHP 설정파일에서 어떤 옵션을 설정해야 안전한가 입니다.

PHP설정파일인 Php.ini 파일에서 SQL Injection을 막을 수 있는 설정을 찾아보았습니다.

magic_quotes_gps라는 항목을 on하면 어느정도 방어가 가능하다고 합니다.

하지만 이 항목도 절대 안전하지 않고 우회할 수 있는 방법들이 존재하였습니다.

magic_quotes_gpc addslashes()라는 함수를 실행시키는 것으로 addslashes() 함수는 위의 설명과 같습니다.

그리고 이 백슬래시를 반환하는 과정에서 취약점이 생겨 SQL Injection이 역시 가능하다고 합니다.

 

출처 http://blog.naver.com/PostView.nhn?blogId=skinfosec2000&logNo=220535626029&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=false&from=postView

'Wargame | CTF > Reversing' 카테고리의 다른 글

CodeEngn Malware06 풀이  (0) 2018.08.07
CodeEngn Malware05 풀이  (0) 2018.08.07
CodeEngn Malware03 풀이  (0) 2018.08.07
CodeEngn Malware02 풀이  (0) 2018.08.07
CodeEngn Malware01 풀이  (0) 2018.08.07