-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
lab working, just need to document it
- Loading branch information
Showing
7 changed files
with
61 additions
and
242 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,43 +1,14 @@ | ||
<?php | ||
/* | ||
Only the admin user is allowed to access this page. | ||
if( isset( $_GET[ 'Login' ] ) ) { | ||
// Check Anti-CSRF token | ||
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); | ||
Make sure to remember to add checks to get and update data. | ||
// Sanitise username input | ||
$user = $_GET[ 'username' ]; | ||
$user = stripslashes( $user ); | ||
$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); | ||
*/ | ||
|
||
// Sanitise password input | ||
$pass = $_GET[ 'password' ]; | ||
$pass = stripslashes( $pass ); | ||
$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); | ||
$pass = md5( $pass ); | ||
|
||
// Check database | ||
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; | ||
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); | ||
|
||
if( $result && mysqli_num_rows( $result ) == 1 ) { | ||
// Get users details | ||
$row = mysqli_fetch_assoc( $result ); | ||
$avatar = $row["avatar"]; | ||
|
||
// Login successful | ||
$html .= "<p>Welcome to the password protected area {$user}</p>"; | ||
$html .= "<img src=\"{$avatar}\" />"; | ||
} | ||
else { | ||
// Login failed | ||
sleep( rand( 0, 3 ) ); | ||
$html .= "<pre><br />Username and/or password incorrect.</pre>"; | ||
} | ||
|
||
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); | ||
if (dvwaCurrentUser() != "admin") { | ||
print "Unauthorised"; | ||
http_response_code(403); | ||
exit; | ||
} | ||
|
||
// Generate Anti-CSRF token | ||
generateSessionToken(); | ||
|
||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,102 +1,11 @@ | ||
<?php | ||
|
||
if( isset( $_POST[ 'Login' ] ) && isset ($_POST['username']) && isset ($_POST['password']) ) { | ||
// Check Anti-CSRF token | ||
checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); | ||
|
||
// Sanitise username input | ||
$user = $_POST[ 'username' ]; | ||
$user = stripslashes( $user ); | ||
$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); | ||
|
||
// Sanitise password input | ||
$pass = $_POST[ 'password' ]; | ||
$pass = stripslashes( $pass ); | ||
$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); | ||
$pass = md5( $pass ); | ||
|
||
// Default values | ||
$total_failed_login = 3; | ||
$lockout_time = 15; | ||
$account_locked = false; | ||
|
||
// Check the database (Check user information) | ||
$data = $db->prepare( 'SELECT failed_login, last_login FROM users WHERE user = (:user) LIMIT 1;' ); | ||
$data->bindParam( ':user', $user, PDO::PARAM_STR ); | ||
$data->execute(); | ||
$row = $data->fetch(); | ||
|
||
// Check to see if the user has been locked out. | ||
if( ( $data->rowCount() == 1 ) && ( $row[ 'failed_login' ] >= $total_failed_login ) ) { | ||
// User locked out. Note, using this method would allow for user enumeration! | ||
//$html .= "<pre><br />This account has been locked due to too many incorrect logins.</pre>"; | ||
|
||
// Calculate when the user would be allowed to login again | ||
$last_login = strtotime( $row[ 'last_login' ] ); | ||
$timeout = $last_login + ($lockout_time * 60); | ||
$timenow = time(); | ||
|
||
/* | ||
print "The last login was: " . date ("h:i:s", $last_login) . "<br />"; | ||
print "The timenow is: " . date ("h:i:s", $timenow) . "<br />"; | ||
print "The timeout is: " . date ("h:i:s", $timeout) . "<br />"; | ||
*/ | ||
|
||
// Check to see if enough time has passed, if it hasn't locked the account | ||
if( $timenow < $timeout ) { | ||
$account_locked = true; | ||
// print "The account is locked<br />"; | ||
} | ||
} | ||
|
||
// Check the database (if username matches the password) | ||
$data = $db->prepare( 'SELECT * FROM users WHERE user = (:user) AND password = (:password) LIMIT 1;' ); | ||
$data->bindParam( ':user', $user, PDO::PARAM_STR); | ||
$data->bindParam( ':password', $pass, PDO::PARAM_STR ); | ||
$data->execute(); | ||
$row = $data->fetch(); | ||
|
||
// If its a valid login... | ||
if( ( $data->rowCount() == 1 ) && ( $account_locked == false ) ) { | ||
// Get users details | ||
$avatar = $row[ 'avatar' ]; | ||
$failed_login = $row[ 'failed_login' ]; | ||
$last_login = $row[ 'last_login' ]; | ||
|
||
// Login successful | ||
$html .= "<p>Welcome to the password protected area <em>{$user}</em></p>"; | ||
$html .= "<img src=\"{$avatar}\" />"; | ||
|
||
// Had the account been locked out since last login? | ||
if( $failed_login >= $total_failed_login ) { | ||
$html .= "<p><em>Warning</em>: Someone might of been brute forcing your account.</p>"; | ||
$html .= "<p>Number of login attempts: <em>{$failed_login}</em>.<br />Last login attempt was at: <em>${last_login}</em>.</p>"; | ||
} | ||
|
||
// Reset bad login count | ||
$data = $db->prepare( 'UPDATE users SET failed_login = "0" WHERE user = (:user) LIMIT 1;' ); | ||
$data->bindParam( ':user', $user, PDO::PARAM_STR ); | ||
$data->execute(); | ||
} else { | ||
// Login failed | ||
sleep( rand( 2, 4 ) ); | ||
|
||
// Give the user some feedback | ||
$html .= "<pre><br />Username and/or password incorrect.<br /><br/>Alternative, the account has been locked because of too many failed logins.<br />If this is the case, <em>please try again in {$lockout_time} minutes</em>.</pre>"; | ||
|
||
// Update bad login count | ||
$data = $db->prepare( 'UPDATE users SET failed_login = (failed_login + 1) WHERE user = (:user) LIMIT 1;' ); | ||
$data->bindParam( ':user', $user, PDO::PARAM_STR ); | ||
$data->execute(); | ||
} | ||
|
||
// Set the last login time | ||
$data = $db->prepare( 'UPDATE users SET last_login = now() WHERE user = (:user) LIMIT 1;' ); | ||
$data->bindParam( ':user', $user, PDO::PARAM_STR ); | ||
$data->execute(); | ||
/* | ||
Only the admin user is allowed to access this page | ||
*/ | ||
|
||
if (dvwaCurrentUser() != "admin") { | ||
print "Unauthorised"; | ||
http_response_code(403); | ||
exit; | ||
} | ||
|
||
// Generate Anti-CSRF token | ||
generateSessionToken(); | ||
|
||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,32 +1,3 @@ | ||
<?php | ||
|
||
if( isset( $_GET[ 'Login' ] ) ) { | ||
// Get username | ||
$user = $_GET[ 'username' ]; | ||
|
||
// Get password | ||
$pass = $_GET[ 'password' ]; | ||
$pass = md5( $pass ); | ||
|
||
// Check the database | ||
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; | ||
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); | ||
|
||
if( $result && mysqli_num_rows( $result ) == 1 ) { | ||
// Get users details | ||
$row = mysqli_fetch_assoc( $result ); | ||
$avatar = $row["avatar"]; | ||
|
||
// Login successful | ||
$html .= "<p>Welcome to the password protected area {$user}</p>"; | ||
$html .= "<img src=\"{$avatar}\" />"; | ||
} | ||
else { | ||
// Login failed | ||
$html .= "<pre><br />Username and/or password incorrect.</pre>"; | ||
} | ||
|
||
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); | ||
} | ||
|
||
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,35 +1,11 @@ | ||
<?php | ||
|
||
if( isset( $_GET[ 'Login' ] ) ) { | ||
// Sanitise username input | ||
$user = $_GET[ 'username' ]; | ||
$user = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); | ||
|
||
// Sanitise password input | ||
$pass = $_GET[ 'password' ]; | ||
$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ? mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) : ((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call! This code does not work.", E_USER_ERROR)) ? "" : "")); | ||
$pass = md5( $pass ); | ||
|
||
// Check the database | ||
$query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; | ||
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); | ||
|
||
if( $result && mysqli_num_rows( $result ) == 1 ) { | ||
// Get users details | ||
$row = mysqli_fetch_assoc( $result ); | ||
$avatar = $row["avatar"]; | ||
|
||
// Login successful | ||
$html .= "<p>Welcome to the password protected area {$user}</p>"; | ||
$html .= "<img src=\"{$avatar}\" />"; | ||
} | ||
else { | ||
// Login failed | ||
sleep( 2 ); | ||
$html .= "<pre><br />Username and/or password incorrect.</pre>"; | ||
} | ||
|
||
((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); | ||
/* | ||
Only the admin user is allowed to access this page | ||
*/ | ||
|
||
if (dvwaCurrentUser() != "admin") { | ||
print "Unauthorised"; | ||
http_response_code(403); | ||
exit; | ||
} | ||
|
||
?> |