본문 바로가기

WebHacking

WebHacking - (3)세션 생성 및 제거

이번엔 처음 만든 로그인 페이지에서 세션 기능을 추가하고 세션 값 확인과 세션 파괴하는 코드를 짜봤다.

세션과 쿠키 기능을 넣어야 나중에 웹 해킹 실습때 XSS를 통해 쿠키 값 탈취 등의 공격을 실습 할 수 있다.

미리미리 만들어두면 편하니까 ㅎ

 

- login.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
        <head>
                <meta charset="utf-8">
                <title>
        로그인 페이지
        </title>
        <h2>ID와 비밀번호를 입력하세요</h2>
        </head>
        <body>
                <form method=post action=login.php>
                        ID : <input type=text name=i_id><br>
                        PW : <input type=text name=i_pw>
                        <input type=submit value=로그인>
                </form>
        </body>
</html>
cs

바뀐 부분은 ID와 PW를 받는 부분에서 구분하기 위해 name에 id를 i_id, pw를 i_pw로 변경했다.

 

- login.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
session_start();
 
include './db_connect.php';
$id=$_POST['i_id'];
$pw=$_POST['i_pw'];
$sql="select id,pw,name from member where id='$id' and pw='$pw'";
$result=mysqli_query($connect$sql);
$record=mysqli_fetch_array($result);
if(!$record) {
        echo "로그인 실패했습니다<br> ID  또는 비밀번호가 일치하지 않습니다.<br>
                ".mysqli_error($connect);
        exit;
}
$_SESSION['c_id']=$record['id'];
echo "<br><br><h1>".$record['name']."님 환영합니다!</h1>";
 
mysqli_close($connect);
?>
cs

session_start(); 함수를 맨 처음에 호출해줘야 $_SESSION 변수를 사용할 수 있고, PHPSESSID로 쿠키값을 전송한다.

$_SESSION 변수는 기본적으로 배열 형태로 생성된다.

15번째 줄에서 $_SESSION 변수에 SQL문에서 SELECT한 ID (데이터베이스에 저장된 ID)를 'c_id' 배열값에 저장한다.

이걸 확인하기 위해서 세션 확인 PHP를 추가로 만들었는데, BurpSuite를 사용해서도 확인이 가능하다.

 

- session_check.php

1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<meta charset = 'utf-8'>
<?php
session_start();
if($_SESSION['c_id']=='')
{
        echo "로그인부터 하세요";
        exit;
}
        echo "로그인 ID : ".$_SESSION['c_id']."님 안녕하세요!";
?>
<script>alert(document.cookie)</script>
</html>
cs

 

세션 ID를 체크하기 위한 PHP 코드인데, $_SESSION 변수에 값이 없다면 로그인부터 하라는 간단한 조건문도 중간에 넣었다.

세션 변수 유무를 통해 로그인이 된 상태인지 아닌지를 확인 할 수 있다.

12번째 줄 Javascript로 PHPSESSID 확인이 가능하다.

 

- session_delete.php

1
2
3
4
5
6
7
8
<html>
<meta charset = 'utf-8'>
<?php
session_start();
session_destroy();
echo "세션이 제거되었습니다";
?>
</html>
cs

 

로그아웃 또는 원활한 실습 환경을 위한 세션 제거 코드로 세션을 삭제한다.