· last year · Feb 06, 2025, 07:30 PM
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CTF Login Challenge</title>
7</head>
8<body>
9 <h2>Login Page</h2>
10 <form id="loginForm">
11 <label for="username">Username:</label><br>
12 <input type="text" id="username" name="username"><br><br>
13 <label for="password">Password:</label><br>
14 <input type="password" id="password" name="password"><br><br>
15 <input type="submit" value="Login">
16 </form>
17 <button id="forgotPasswordBtn">Forgot Password</button>
18
19 <form id="forgotPasswordForm" style="display: none;">
20 <label for="forgotUsername">Username:</label><br>
21 <input type="text" id="forgotUsername" name="forgotUsername"><br><br>
22 <label for="email">Email (Optional):</label><br>
23 <input type="email" id="email" name="email"><br><br>
24 <label for="newPassword">New Password:</label><br>
25 <input type="password" id="newPassword" name="newPassword"><br><br>
26 <input type="submit" value="Reset Password">
27 </form>
28
29 <p id="flagMessage" style="display: none; color: red;">🎉 Flag: <span id="flag"></span></p>
30
31 <script>
32 // Notify the server when the client connects
33 fetch("http://localhost:3000/client-connect", {
34 method: "POST",
35 headers: { "Content-Type": "application/json" },
36 body: JSON.stringify({ message: "Client connected to the page" })
37 }).catch(error => console.error("Error notifying server:", error));
38
39 document.getElementById('forgotPasswordBtn').addEventListener('click', function() {
40 document.getElementById('forgotPasswordForm').style.display = 'block';
41 });
42
43 // Handle Forgot Password Form Submission
44 document.getElementById('forgotPasswordForm').addEventListener('submit', function(event) {
45 event.preventDefault();
46
47 let username = document.getElementById('forgotUsername').value;
48 let email = document.getElementById('email').value;
49 let newPassword = document.getElementById('newPassword').value;
50
51 fetch("http://localhost:3000/reset-password", {
52 method: "POST",
53 headers: { "Content-Type": "application/json" },
54 body: JSON.stringify({ username, email, newPassword })
55 })
56 .then(response => response.json())
57 .then(data => alert(data.message))
58 .catch(error => alert("Error resetting password"));
59 });
60
61 // Handle Login Form Submission
62 document.getElementById('loginForm').addEventListener('submit', function(event) {
63 event.preventDefault();
64
65 let username = document.getElementById('username').value;
66 let password = document.getElementById('password').value;
67
68 fetch("http://localhost:3000/login", {
69 method: "POST",
70 headers: { "Content-Type": "application/json" },
71 body: JSON.stringify({ username, password })
72 })
73 .then(response => response.json())
74 .then(data => {
75 if (data.success) {
76 alert(data.message);
77 if (data.flag) {
78 document.getElementById('flagMessage').style.display = 'block';
79 document.getElementById('flag').innerText = data.flag;
80 }
81 }
82 })
83 .catch(error => alert("Invalid credentials!"));
84 });
85 </script>
86</body>
87</html>
88