DirectX 개발시
프로젝트의 설정이다.

1. 포함 디렉터리
-> Visual Studio에게 DirectX 헤더 파일을 찾아볼 곳을 알려주는 역할을 한다.

(포함디렉터리1)


구성을 모든 구성으로 만든다.





(포함디렉터리2)


왼쪽 창에서 VC++ 디렉터리를 클릭하고 오른쪽 창의 포함 디렉터리를 클릭한다.





(포함디렉터리3)


오른쪽 드롭다운 화살표를 클릭하고 <편집...>을 클릭한다.





(포함디렉터리4)


위와 같이
$(DXSDK_DIR)\Include
라고 적고 확인을 클릭한다.



2. 라이브러리 디렉터리

-> 링커에게 DirectX 라이브러리 파일을 찾아볼 곳(경로)을 알려준다.



(라이브러리 디렉터리1)


1번 설정에 이어서 오른쪽 창에서 라이브러리 디렉터리를 클릭하고
드롭다운 화살표를 클릭하여 <편집...>을 클릭한다.





(라이브러리 디렉터리2)


위와 같이
$(DXSDK_DIR)\Lib\x86
이라고 적고 확인을 클릭한다.

3. 런타임 라이브러리
-> C 런타임 라이브러리를 정적으로 링크해 C 런타임 라이브러리 DLL이 설치되지 않은 시스템에서도 프로그램이 동작하게 설정할 것이다.


(런타임 라이브러리1)


왼쪽 상단에 구성을 Release로 해준다.




(런타임 라이브러리2)


C/C++ 을 클릭하고 하위 메뉴를 열어준다.
거기에서 코드 생성을 클릭해주고
오른쪽 창에서 런타임 라이브러리를 /MT 로 설정한다.

4. 추가 종속성

-> Visual Studio에게 어떤 DirectX 라이브러리를 추가해야 하는지 알려준다.


(추가 종속성1)


왼쪽 상단의 구성을 모든 구성으로 만든다.
그 후 링커를 클릭하고 하위 메뉴를 열어준다.
그리고 오른쪽 창의 추가 종속성을 클릭하고 드롭다운 화살표를 클릭하여 <편집...>을 클릭한다.




(추가 종속성2)


위와 같이
d3d9.lib
이라고 적어주고 확인을 클릭한다.

(*참조 - 2D 게임 프로그래밍, 찰스 켈리)


지난 포스팅 글에서
아파치 웹 서버의 설정파일을 통해서 인증을 구현해보았다.
이어서 인증 사용자를 추가하고 추가적으로
글로벌 설정 파일과 로컬 설정 파일, 웹 서버 설정 파일에 대해 간략히 이야기 해보겠다.

지난 글에서 설정한 내용에서 우리가
.htpasswd 파일에 정보를 이용해 인증에 사용할거라는 코드가 있었다.
이제 그 파일을 만들어주는 작업을 해주면 된다.

처음 파일을 만드는 경우와 기존에 있던 파일에 사용자를 추가하는데 있어서
코드가 조금 다르다.


처음에 파일을 만드는 경우
#> htpasswd -c /var/www/html/.htpasswd user1




(사용자 생성)



user1을 생성해 보았다.

이제 기존에 있던 파일에 사용자를 추가하는 작업을 해보겠다.

이미 만들어진 파일에 사용자를 추가하는 경우
#> htpasswd /var/www/html/.htpasswd user2
여기서 user2는 사용자 이름이다.



(사용자 추가)



사용자를 추가해보았다.

.htpasswd 파일에 추가해주었는데 이 파일을 확인해 보면



(.htpasswd 파일)



확인해보면 사용자 아이디와 비밀번호가 보인다.
(비밀번호는 보안상 해쉬값으로 저장되어있는 것을 확인 할 수 있다.)

이렇게 만든 파일이 인증에 정말 잘 적용되는지
접속해보겠다.



(인증 접속)




(성공)



인증에 성공되어
페이지에 접근할 수 있는 것을 확인 할 수 있다.

관리자 도구에서 확인해보면
Authorization 항목에 값이 추가되있는 것을 확인 할 수 있다.



(인증 코드)



이렇게 글로벌 설정 파일을 이용하여 웹 페이지 인증을 설정해보았다.
그렇다면
부분적으로 인증을 요구하고 싶다면 어떻게 할까?

예를 들어 전에 우리가 만들었던 auth 폴더에만 인증을 요구하도록..

그러기 위해서는 로컬 설정 파일을 이용하면 된다.
확인해보기 위해 우리가 설정했던 코드들을 원래대로 지워준다.
단, AllowOverride All 은 그대로 둔다.
오버라이드를 허용하겠느냐라는 말인데 허용을 해야
우리가 추가적으로 설정을 할 수 있다.


(수정)



그 후 웹서버를 재시작 시켜준다. :)



(웹 서버 재시작)



글로벌 설정 파일 중
/etc/httpd/conf/httpd.conf
파일의 404번 라인을 보면
.htaccess 파일을 추가적인 설정 파일로 적용 시킬 수 있다는 부분이 보인다.

->
.htaccess 파일이 있는 디렉터리부터 그 하위까지 영향이 있다.
이 파일이 존재하면 그 해당 디렉터리 아래부터 인증을 요구하게 된다.

이 기능을 이용하여 웹 인증을 부분적으로 적용시켜보겠다.
auth폴더에 들어가서 .htaccess 파일을 만들어준다.



(auth 폴더)




(.htaccess)


.htaccess 파일에는 우리가 저번에 사용하였던
코드를 그대로 넣어준다. (인증을 사용하겠다는 말이다.)
그렇게 하여 확인해보면
auth 폴더에 있는 login.php 페이지에 대해 인증을 요구하게 된다.



(인증 요구)



반면 다른 폴더에 있는 제로보드 게시판에 대하여는
인증을 요구하지 않는 모습을 확인 할 수 있다.




(인증 요구없음)



이로써 글로벌 설정과 로컬 설정을 인증 설정을 하면서
확인해 보았다.

다음 글에서는 파일 업로드 취약점을 공략하기 위해
php 파일을 업로드 해야하는데
이 기능이 막혀있었던 것을 우회하는 방법을 살펴볼 것이다.





Web Hacking - 실습환경 웹서버 구축(제로보드)(1) 에 이어서 웹서버를 설정할 것이다.

install.php 경로로 들어오면 아래와 같은 화면이 나온다.




(707 퍼미션 요구 화면)



빨간 글씨로 707 퍼미션이 되어있지 않다고 나와있다.

zboard 디렉터리의 권한 설정을 해준다.
#> chmod 707 zboard



(권한 설정 화면)




위와 같이 설정이 잘되면
아래와 같이 빨간 글씨가 사라지고 설치 시작 버튼이 나온다.



(설치 시작 화면)



클릭을 해주면
아래와 같이 입력하는 란이 나오는데
여기서 아직 우리가 DB를 만들지 않았다.



(입력 화면)



zboard DB를 만들어보자!

먼저 mysql에 접속해준다.



(mysql 접속)



접속 후 show databases; 명령어를 이용하면
현재 있는 DB가 보인다.



(현재 DB)



여기서
create 명령어를 사용하여 zboard라는 DB를 만들어준다.



(DB 생성)



다시
show databases;
명령어를 이용하여 현재 DB를 확인해보면
zboard가 생성된 것을 확인 할 수 있다.



(생성된 DB)



자 생성해주고!
입력을 해주고
설정완료를 눌루면 다음과 같이 에러가 나온다.



(에러 화면)



위 에러는 우리가 지금 옛날 버젼의 zboard를 쓰기 때문에
쿼리 명령문중 바뀐 내용이 있기 때문이다.

우리는 그 명령문을 수정해 줄 것이다.

수정해줄 파일은
zboard 디렉터리 안에있는 schema.sql 파일이다.



(vi 편집기로 schema.sql 열기)




vi 편집기로 schema.sql 을 열어준다.

그리고 수정해주어야 할 것!

1. password varchar(20) -> password varchar(50)
옛날에는 20사이즈면 충분했지만 더 길어진 해쉬값으로 50까지는 늘려주어야한다.



(password 사이즈 수정)



파일 안에 있는 varchar 사이즈를 50으로 바꾸어준다 전부! (password만)

2. primary key는 default 값이 될 수 없다. 하지만 옛날 버젼에서는 가능했는지 다음과 같은 명령 구문이 들어있는데 이 둘이 충돌이 되기 때문에 삭제해주어야한다.
primary key는 사용할 것이기 때문에 default '0' 만 삭제해 준다.




(default '0' 삭제)




(삭제된 모습)



이렇게 primary key와 충돌하는 default 값을 전부 지워준다.

그렇게 되면 아래와 같이
에러없이 넘어갈 수 있다.

그러면 다음 칸에 아이디, 패스워드를 입력하고 [정보입력완료]를 누르면 된다.




(관리자 정보 입력)



그 후 관리자 계정과 비밀번호로 접속해 준다.


(관리자 계정 접속)



그러면 아래와 같이 관리자 페이지가 나온다.




(관리자 페이지)



여기까지가 제로보드 서버 구축 및 설정이다. :)


웹 해킹에 들어가기 앞서
웹서버를 구축할 것이다.
(취약점이 많은!)

그 취약점들을 먼저 공부해 볼 것이기 때문이다.

리눅스에서 웹서버를 구축하기 전에
리눅스의 방화벽을 전부 해제해 줄 것이다.
(실제 서버에서는 해제하면 안된다!, 하지만 우리는 공부할 것이기 때문에 해제해 주도록 한다!)

리눅스에는 방화벽이 두개가 있다.
1. iptables
2. SELinux
이렇게 두개다!

iptables를 삭제해 줄것이다.
/etc/sysconfig/iptables  를 삭제해준다.



(iptables 삭제)



SELinux를 해제해 줄것이다.

vi /etc/sysconfig/selinux 에 들어가서 (vi 편집기 이용)
SELINUX에 disabled로 고쳐준다.



(SELinux 해제)



잘 해제 되었는지 확인해본다.
iptables -L   (명령)
했을 때 체인 룰이 아무것도 안나오면 설정이 안되있는 것이다.


getenforce를 입력하였을 때
Disabled라고 나오면 해제된 것이다.


(해제 모습)



그 후 yum을 이용하여
httpd.i386
php.i386
php-mysql.i386
mysql.i386
mysql-server.i386

을 설치해준다.



(설치된 모습)



httpd를 실행시켜준다. (아파치 웹서버이다.)



(실행 모습)



netstat -ant로 확인해볼 수 있다. (웹서버 포트는 80번 포트)



(웹서버 실행중)



혹은
현재 실행중인 프로세스를 확인해서 확인할 수 도 있다.
명령어 #> ps -ef | grep httpd



(프로세스 확인)



그렇게 되면 외부 호스트에서 IP주소로 접속하였을 때
아파치 화면이 뜬다.



(아파치 화면)



이제 MySQL 실행시켜줄 것이다.
MySQL은 DB이다.

명령어 #> service mysqld start

netstat -ant로
3306이 열려있으면 실행된 것이다.



(MySQL 실행)



mysql에 접속해 보겠다.
#> mysql -u root
(처음 접속, 비밀번호 설정 안했을 때) 이렇게 들어간다.



(접속 화면)



접속이 되면
mysql>
이렇게 프롬프트가 바뀐다.

비밀번호를 설정해 주겠다.
명령어
#> mysqladmin -u root password (쓸 비밀번호)



(비밀번호 설정)



비밀번호를 설정한 후에는 접속 방법이 조금 다르다.

#> mysql -u root -p
이렇게 접속하면
비밀번호 입력하는 란이 나온다.
여기에 아까 설정해준 비밀번호를 입력하면 된다.


(비밀번호 입력 접속)



이제 제로보드를 설치할 환경이 다 갖추어 졌다.

제로보드를 /var/www/html  경로에 다운받아준다.
현재 제로보드가 tar형태이므로 풀어줄 것이다.
명령어
#> tar xvf zboard.tar



(타르 파일 풀기)




(푼 모습)



해제하고 나면 해당 경로에 디렉터리 하나와 파일 하나가 생긴다.



(풀린 모습)



여기서 /etc/php.ini  파일을 하나 고쳐줄 것이 있다.



(vi /etc/php.ini )



vi 편집기를 이용해 들어와서
아래 표시된 부분을 On으로 고친다.



(고쳐진 모습)



그 후 외부 호스트에서
IP/zboard/install.php 경로로 접속을 하면 아래와 같이 나온다.



(접속 모습)



여기서 한글이 깨지는 것을 발견할 수 있는데
웹브라우저가 인코딩을 안해주기 때문이다.
인코딩 해주는 프로그램을 추가해준다.



(인코딩 프로그램 추가)



추가해 준 후 해당 페이지에서 오른쪽 클릭을 해서
Korea 로 인코딩 눌러준다.



(Korea 클릭)



그렇게 되면 아래와 같은 화면으로 잘 나오게 된다.!





+ Recent posts