이번엔 처음 만든 로그인 페이지에서 세션 기능을 추가하고 세션 값 확인과 세션 파괴하는 코드를 짜봤다.
세션과 쿠키 기능을 넣어야 나중에 웹 해킹 실습때 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 |
로그아웃 또는 원활한 실습 환경을 위한 세션 제거 코드로 세션을 삭제한다.
'WebHacking' 카테고리의 다른 글
WebHacking - (6)Blind SQL Injection 공격 프로세스 정리 (0) | 2022.11.04 |
---|---|
WebHacking - (5)Union/Error Based SQL Injection 공격 프로세스 정리 (0) | 2022.10.28 |
WebHacking - (4)로그인 유형별 SQL Injection을 이용한 로그인 우회 (0) | 2022.10.27 |
WebHacking - (2)회원가입 (2) | 2022.10.19 |
WebHacking - (1)로그인 페이지 (0) | 2022.10.15 |