Skip to content

[Security] SQL Injection in Login + Admin Edit/Add — Critical (CWE-89) #38

Description

Security Vulnerability Report

Researcher: Abdurazzoqov Javohir
Date: 2026-06-19
Severity: Critical (CVSS 9.8)
CWE: CWE-89 (SQL Injection), CWE-256 (Plaintext Password Storage)


Vulnerability 1 — SQL Injection in login.php (Critical)

File: login.php

$email = mysqli_real_escape_string($con, $_POST["email"]);
$password = $_POST["password"]; // NOT escaped!
$sql = "SELECT * FROM user_info WHERE email = '$email' AND password = '$password'";

$password is inserted directly into SQL with no sanitization.

PoC — Auth Bypass:

POST /login.php
email=x&password=x' OR '1'='1'-- -

Impact: Login bypass — access any user account.


Vulnerability 2 — SQL Injection in admin/admin/edituser.php (Critical)

$user_id = $_REQUEST['user_id'];
$first_name = $_POST['first_name'];
$user_password = $_POST['password'];
mysqli_query($con, "update user_info set first_name='$first_name', ..., password='$user_password' where user_id='$user_id'");

5 unsanitized parameters in UPDATE query.


Vulnerability 3 — SQL Injection in admin/admin/addsuppliers.php (Critical)

All POST fields directly inserted into INSERT query without sanitization.


Vulnerability 4 — Plaintext Password Storage (High)

Passwords stored and compared in plaintext across all login flows.


Fix

Use prepared statements:

$stmt = $con->prepare("SELECT * FROM user_info WHERE email = ? AND password = ?");
$stmt->bind_param("ss", $email, password_hash($password, PASSWORD_BCRYPT));
$stmt->execute();

Researcher: Abdurazzoqov Javohir
Contact: abdurazzoqovjavohir700@gmail.com
Related report on advanced version: PuneethReddyHC/online-shopping-system-advanced#83

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions