为什么我可以使用php cURL访问管理面板而不发送用户名和密码

法赫德·艾哈迈德(SM Fahad Ahmad)

我为实验做了一个基本的登录表单,并尝试使用cURL登录。我正在使用php。我已确保没有登录(身份验证)的人无法进入index.php主页。但是现在,当我尝试使用cURL进行访问时,我明白了。我认为登录和会话处理代码中可能存在问题。我已经尽力了,但是没有任何解决方案。请帮助解决此问题。

提前致谢。

1.这是会话处理代码,驻留在session.php中

<?php
class session{
    public static function init(){
        session_start();
    }
    public static function set($key,$value){
        $_SESSION[$key] = $value;
    }
    public static function get($key){
        if (isset($_SESSION[$key])) {
            return $_SESSION[$key];
        }
        else{
            return false;
        }
    }
    public static function cheaksession(){
        self::init();
        if(self::get("login") == false){
            self::destroy();
            header("Location: login.php");
        }
    }
    public static function destroy(){
        session_destroy();
    }
}

?>

2.这是登录表单代码,驻留在login.php中

<?php 
include "lib/session.php"; 
session::init();
?>
<?php include "lib/Database.php"; ?>
<?php include "helpers/format.php"; ?>
<?php 
  $db = new Database();
  $fm = new format();
?>
<?php  

    $err = 0;
    if ($_SERVER['REQUEST_METHOD'] == 'POST' ) {
      $username = $fm->validation($_POST['username']);
      $password = $fm->validation($_POST['password']);

      $username = mysqli_real_escape_string($db->link,$username);
      $password = mysqli_real_escape_string($db->link,$password);

            if($username == 'fahad' && $password == '1234') {
                  session::set("login",true);
          session::set("username",$username);
          session::set("userId",1);
          header("Location: index.php");
            }
      else{
            $err = 1;
      }

    }
?>

3.这是用于会话检查的主页代码,驻留在index.php中

<?php 
      include "lib/session.php"; 
            session::cheaksession();
?>

4.这是攻击的cURL代码

<?php

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,'http://localhost/Hackalgo/DummySite/index.php');

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_exec($ch);

    curl_close($ch);
?>

通过执行此脚本,我正在检索上面(3)中提到index.php的html页面但是在index.php(3)中有一个会话检查器方法,应该迫使我进入(2)中提到的登录页面login.php但是它不起作用,并且在登录页面(2)中没有任何身份验证的情况下index.php(3)进行了爬网。

彼得
  1. 默认情况下,curl不遵循重定向。
  2. 在cheaksession调用之后,没有什么可以阻止PHP执行。

发送Location标头后,调用exit()左右。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 PHP 中使用 Curl 访问带有用户名和密码的 API

如何使用RestClient发送用户名和密码

使用用户名和密码访问Kubernetes API

登录问题我可以使用任何用户名和密码登录

检查用户名和密码 PHP

php设置用户名和密码

如何从我的 powershell 脚本向 git 的凭据用户提示发送用户名和密码?

在Spring中使用用户输入的用户名和密码发送邮件

为什么我可以使用Firefox或WGET访问网站,但不能使用CURL或Ruby

为何起作用:Windows使用相同的本地管理员用户名和密码,可以访问其他计算机?

如何授予不使用特定用户名和密码的用户访问数据库的权限?

如何使用用户名和密码访问Active Directory上的用户文件夹?

我想向发送OTP消息。但是当我输入用户名和密码时,它显示了错误的用户名和密码

使用用户名和密码在PHP中访问sql

是否可以在curl请求中包括用户名和密码?

使用cURL使用用户名和密码登录到Gitlab

curl 使用用户名密码和登录按钮登录网站

如何使用Java在SOAP UI中使用用户名和密码发送SOAP请求

使用Windows凭据管理器时切换用户名和密码

无法使用有效的用户名和密码登录django管理页面

无法使用有效的用户名和密码登录django管理页面

如何使用数据库表设置管理员的用户名和密码?

无法使用正确的用户名和密码登录Django管理员

使用用户名和密码发送POST请求并保存会话cookie

Yii2 使用任意用户名和密码发送邮件

使用套接字将用户名和密码发送到TCP服务器

如何使用Ajax将用户名和密码发送到快递服务器?

如何使用stream_context_create()发送用户名/密码和Cookie

使用没有用户名和密码的 SMTP 发送电子邮件