Hacking_study/해킹과제

워게임 만들기! (쿠키 변조 맛보기)

jin_li 2023. 4. 12. 04:11

이래도 되나? 싶을 정도로 순한 맛으로 만들었다. (내 능력의 한계......)
 
 
 
Natas를 참고해서, 
 
올바른 id와 pw를 입력했을 때는 loggedin 이라는 쿠키의 값을 true로 설정하고,
틀린 id와 pw를 입력했을 때는 loggedin이라는 쿠키의 값을 false로 설정했다.
 
그리고 loggedin 쿠키의 값이 true일 때만 로그인 성공되게 했다.
 
 
 
 
 

1. login.php 코드 소스

 
로그인 폼이 있는 페이지 코드 소스는 다음과 같이 간단하게 만들었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html>
<html>
<head>
    <title>로그인 페이지</title>
    <style>
        body {
        text-align: center;
        }
 
        form {
            display: inline-block;
            margin-top: 20px;
        }
 
        input {
            margin-top: 10px;
        }
</style>
</head>
<body>
    <h1>쿠키 변조해서 로그인 해야 함~~</h1>
    <form method="post" action="login_process.php">
        <label for="userid">ID</label>
        <input type="text" id="userid" name="userid" type="submit" >
        <label for="passwd">PW</label>
        <input type="password" id="passwd" name="passwd" type="submit">
        <input type="submit" value="로그인">
    </form>
</body>
</html>
 
cs

 
 
 
 

2. login_process.php 코드 소스

 
로그인 처리할 코드 소스이다. 심플 그 자체.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
    $userid = $_POST['userid'];
    $passwd = $_POST['passwd'];
 
 
    if ($userid === 'admin' && $passwd === 'password') {   // id와 pw를 맞게 입력하면
        setcookie('loggedin''true'time() + 3600);      // 1시간 동안 loggedin = true 쿠키 설정  
    }
    else {                                                 // id와 pw가 틀리면
        setcookie('loggedin''false'time() + 3600);     // 1시간 동안 loggedin = false 쿠키 설정
    }
 
 
    if ($_COOKIE['loggedin'=== 'true') {    // loggedin 쿠키의 값이 true면 로그인 성공
        echo "<h1>~~로그인 성공~~</h1>";
    }
    else {                                    // loggedin 쿠키의 값이 false이면 로그인 실패
        echo "<h1>로그인 실패</h1>";
    }
?>
cs

 
 
 
 
 

풀이

 
login.php 접속해서 틀린 id와 pw를 입력해보자.

 
 
"로그인 실패" 가 출력되고, loggedin의 쿠키값이 false로 설정되었다.

 
 
이제 인터셉트를 켠 뒤, 아까의 틀린 id와 pw를 다시 보내보자. 이 때 잡힌 요청에서 loggedin의 쿠키 값을 true로 바꾼다.

 
 
이제 포워드 했을 때, "로그인 성공"이 출력된다.

 
 
 
 
만들고 보니 이따위로 로그인을 관리하는 서버가 있을리 없다. 80년대도 이 정돈 아니었을듯...
다음 번엔 세션으로 로그인 처리하는 걸 뚫어야 하는 워게임 만들어 봐야겠다.