Web 모의해킹

웹보안) GET 방식을 이용한 웹 브라우저

5_jinseok12 2018. 2. 21. 18:54
728x90

 

오늘 공부할 내용은 Web에서 데이터의 전달(입,출력)이다.

데이터를 전달하는 방법은 2가지가 있다

 

GET방식과 POST방식이 있다. 오늘은 GET방식에 대해 알아보겠다.

 

 

우선 웹브라우저에 들어간 후 개발자도구(F12)를 켠다.

리눅스에서 vi를 통해 편집한 파일을 브라우저에서 실행시켰을 때 아래 사진과 같이 html파일이 뜬다.

 

 

 

network를 클릭해보면 사진과 같이 vi에서 입력했던 코드를 알 수 있다

또한 Network에 header를 보면 URL, IP주소, GET방식 등 여러가지 정보를 알 수 있다.

하지만 이게 결코 장점은 아니다 . 어떤 값을 입력했을 때 URL에 관련된 경로와 정보가 같이 출력되기 때문에

보안적인 면에서 별로 좋은 편은 아니다.

 

 

우선 PHP를 설치해보자

#yum search php 를 입력해서 php에 관련된 내용들을 찾아볼 수 있다

x86을 사용할수도 있고 i686을 사용할수도 있기 때문에 search를 통해 찾아본 후 알맞게 다운받아 사용하면 된다.

 

 

검색해본 후 #yum install php.i686 을 통해 다운받는다

 

다운이 완료되었다면 cd/ var/www/html 에서 임의의 php파일을 만들고 그안에 내용을 편집해보자.

 

기본적인 출력방법 3가지. echo, print , printf  편한거를 사용하면 된다. 

<?php   /                    // php 블럭의 시작을 나타낸다 자바의 스크립트 안에 있는것과 같은 원리
   // #> php hello.php     // 주석처리
   echo "Hello, PHP\n";  //echo : 화면에 출력하고 싶을 때
   print "Hello' PHP\n";  //파이썬처럼 그냥 사용해도 된다
   printf ("%s\n","hello PHP");
   ?>

 

vi에 편집한 후 위와 같이 #php hello.php를 입력함으로써 출력정보를 확인할 수 있다.

제대로 입력된것을 확인,

 

 

PHP에서 <?php ?> 이것은 자바스크립트의 <script></script> 와 같은 원리이다

하지만 그범위 밖에서 문자를 입력하면 어떻게 될까?

 

결과는 똑같이 출력된다,

 

하지만 <?php  ?> 안에 별다른 print나 echo 등 없이 그냥 문자만 입력할 경우에는 오류가 뜬다.

어떻게보면 당연한거지만 블럭밖의 문자열이 출력된다는 것만 알아두자.

 

에러 화면.

 

 

 

자바스크립트와 PHP의 차이에 대해 간략하게 알아보자

JavaScript

 - 실행시키지 않고 통채로 가져와서 웹에서 실행한다

 - 오류가 났을 때 코드를 통해 직접 찾아볼 수 있다

 PHP

 - 출력이 됐을 때 어떠한 명령에 의해 어떤 과정으로 출력되었는지 알수가 없다.

 - 왜냐하면 웹에서 실행을 시키는데 오류가 나도 코드를 보여주지 않기 때문이다

 - 그렇기 때문에 오류를 찾는 번거로움은 있지만 보안적인 측면에선 효율성이 좋다

 - PHP를 통해 실행시킨 웹브라우저는 에러가 나면 아무것도 출력되지 않고 빈 화면이 뜬다.

 

만약 이렇게 문서가 그대로 뜬다면 어떻게 해야할까

오타문제일수도 있겠지만 실행기가 없거나, PHP파일로 인식을 못했을 수도 있다.

그럴때는 #service httpd restart를 통해 재실행을 시켜줘야 한다

또한 뒤에 확장자가 다르면 php파일로 인식하지 않는다.

그럴 경우에도 위와 같이 문서가 그대로 출력되기 때문에 꼭 알아두자

 

 

※ 주의 사항

나는 분명 위에 \n을 입력했는데 문자가 나란히 입력되었다. 왜그럴까?

이유는 웹브라우저에서 실행시킬때 \n은 먹히지 않기 때문이다.

한칸을 띄우고 싶다면 <br>을 사용해야 한다

소스보기에서는 \n이 먹히지만 실제 브라우저에서는 먹히지 않는다

많은 사람들이 헷갈려하니 주의하자. 웹브라우저에서는 <br>을 사용해야 한다 !

 

 

<br>을 사용했을 경우 나타나는 출력화면.

 

 

에러메세지를 알려주지 않기 때문에 초보자들 같은 경우 소스에서 오타찾는것을 어려워할 수 있다

그럴때 에러메세지를 나타내주는 명령어가 있다.

#vi /etc /php.ini 를 통해 편집 화면에 들어가서 530번째 줄로 530gg를 눌러 이동해보자

그럼 아래 화면과 같이 display_errors =Off가 뜬다.

off를 on으로 바꿔준 후 Apache를 재시작 시켜줘야 한다

바꾼다음 실시간으로 적용되는것이 아니기 때문이다,

하얀 백지만 나올 경우 코드상에 문제가 있기 때문에 어디 부분이 틀렸는지 찾을 때 사용하도록 하자

 

 

행으로 찾을 땐 행번호+gg 를 입력하면 되고

단어로 찾을땐 /단어  를 쳐서 찾으면 간단하게 찾을 수 있다

 

이런식으로 입력할 경우 그냥 아무 숫자도 안뜨고 Array만 출력된다.

 

배열에 첫번째 자리 $arr[0]만 출력한다는 의미.

즉 맨 앞에 있는 10이 출력.

배열은 두가지 타입으로 사용할 수 있다

변수의 선언없이 변수를 정의하는 것만 있다

arr은 뒤에가 배열 타입이기 때문에 배열이 되는 것이다.

 

 

echo $arr[0] 으로 인해 10은 출력되고

print_r($arr)로 인해 위와 같은 화면이 출력된다. 배열을 나타낼 때 많이 사용.

두번째 원소의 키는 문자키로도 지정할 수 있다

 

배열 안에 배열을 쓰는 다차원 배열도 사용이 가능하다

php에서 . 은 java에서 +와 같은 붙여주는 기능을 한다.

 

 

 

 

반응형