Linux/모의해킹

session 이해하기

GGkeeper 2022. 1. 21. 17:45

실습> session 이해하기

1. 소스 코드 생성
1.php, 2.php를 생성한다.
/var/www/html/php 디렉터리로 이동한다.
[root@www html]# mkdir php
[root@www html]# cd php
[root@www php]# vi 1.php
<?
/*
 * 파일명 : 1.php
 * php 변수 형식 : 
 * $변수명 = 값;
 */
$a = 1;
echo $a;
?>

[root@www php]# vi 2.php
<?
/*
 * 파일명 : 2.php
 */

echo $a;
?>

2. 프록시 Off
burp에서 프록시를 Intercept is off 로 꺼준다.

3. 브라우저 확인
1.php, 2.php를 확인한다.
http://192.168.108.101/php/1.php
1

http://192.168.108.101/php/2.php
Notice: Undefined variable: a in /var/www/html/php/2.php on line 6

4. 프록시 On
burp에서 프록시를 Intercept is on 으로 켜준다.

5. 브라우저 확인
1.php, 2.php를 확인한다.
http://192.168.108.101/php/1.php
1

GET /php/1.php HTTP/1.1
Host: 192.168.108.101
  :
  :(생략)
Cookie: PHPSESSID=evdm7287q06rei82qufic5ea82  <--
Connection: close


2.php는 1.php에서 설정한 변수 $a를 인식할 수 없다.
http://192.168.108.101/php/2.php
Notice: Undefined variable: a in /var/www/html/php/2.php on line 6

GET /php/2.php HTTP/1.1
Host: 192.168.108.101
  :
  :(생략)
Cookie: PHPSESSID=evdm7287q06rei82qufic5ea82  <--
Connection: close


6. 소스 코드 수정
1.php, 2.php를 수정한다.
[root@www php]# vi 1.php
<?
/*
 * 파일명 : 1.php
 * php 변수 형식 : 
 * 지역 변수는 메모리에 저장된다.
 * $변수명 = 값;
 *
 * php 세션 변수 형식 : 
 * 세션 변수는 세션 파일에 저장된다.
 * $_SESSION['변수명'] = 값;
 */

// 세션을 시작한다.
session_start();

// 세션 파일에 저장된다.
$_SESSION['a'] = 1;
echo $_SESSION['a'];
?>

다른 터미널을 열어서 세션 디렉터리로 이동한 후 세션 파일을 확인한다.
[root@www ~]# cd /var/lib/php/session/
[root@www session]# ls
sess_evdm7287q06rei82qufic5ea82

세션 파일에 a|i:1; 저장되어 있다.
[root@www session]# cat sess_evdm7287q06rei82qufic5ea82 
userid|s:5:"admin";username|s:9:"관리자";a|i:1;

<?
/*
 * 파일명 : 2.php
 */
session_start();  // 세션을 사용하기 위해서는 session_start(); 함수를 호출해야 사용할 수 있다.

// 세션 파일에서 세션 변수 a를 출력한다.
echo $_SESSION['a'];  // 1
?>

7. 브라우저에서 확인
1.php, 2.php를 확인한다.
http://192.168.108.101/php/1.php
1

http://192.168.108.101/php/2.php
1

8. 세션 파괴하기
<?
/*
 * 파일명 : 2.php
 */
// 세션을 사용하기 위해서는 session_start(); 함수를 호출해야 사용할 수 있다.
session_start();  
session_destroy();

// 세션 파일에서 세션 변수 a를 출력한다.
echo $_SESSION['a'];  // 에러
?>