SECURITYHIGHCVE-2026-86208

SQL Injection in SourceCodester Class & Exam Timetabling System

CVE-2026-86208: an unauthenticated SQL injection in delete_teacher.php lets remote attackers manipulate the ID parameter. Public exploit code exists.

Dylan H.

Security Team

September 7, 2026
4 min read
SQL Injection in SourceCodester Class & Exam Timetabling System

Affected Products

  • SourceCodester Class and Exam Timetabling System 1.0

Executive Summary

A SQL injection vulnerability tracked as CVE-2026-86208 has been disclosed in SourceCodester Class and Exam Timetabling System 1.0, a free PHP/MySQL scheduling application widely reused in student projects and small deployments. The flaw sits in an unknown function of /delete_teacher.php, where the ID argument is passed into a database query without sanitization. The attack can be launched remotely and requires no authentication. Public exploit code is already available.

CVSS 3.1 Score: 7.3 (High)


Vulnerability Overview

AttributeValue
CVE IDCVE-2026-86208
CVSS 3.1 Score7.3 (High)
CVSS 4.0 Score6.9 (Medium)
TypeSQL Injection (CWE-89)
Attack VectorNetwork — remote, unauthenticated
Affected Endpoint/delete_teacher.php
Affected ParameterID
Exploit AvailabilityPublic exploit published
AssignerVulDB

Affected Versions

ProductAffected VersionsFixed Version
SourceCodester Class and Exam Timetabling System1.0None available

No vendor patch has been released for this issue as of publication. SourceCodester projects are community-maintained sample applications; fixes, if any, typically arrive as unofficial community patches rather than an official release.


Technical Details

delete_teacher.php accepts an ID value — most likely via a GET or POST request — and concatenates it directly into a SQL statement used to delete a teacher record. Because the value is not validated or passed through a parameterized query, an attacker can inject arbitrary SQL syntax in place of a legitimate numeric ID.

1. Attacker identifies a public-facing deployment of the Timetabling System
2. Attacker crafts a malicious ID value for /delete_teacher.php,
   e.g. injecting UNION SELECT or boolean-based payloads
3. The unsanitized value reaches the SQL query and is executed by MySQL
4. Attacker extracts, modifies, or deletes arbitrary database records
5. Depending on DB privileges, further compromise (e.g. via
   INTO OUTFILE / LOAD_FILE) may be possible

Impact of Successful Exploitation

ImpactDescription
Data ExfiltrationDump student, teacher, and exam schedule records
Data TamperingModify or delete arbitrary rows via injected statements
Authentication BypassPotential to bypass login logic if credentials share the same database
Server CompromisePossible file read/write via DBMS functions if privileges allow it

Mitigation

Because no official fix currently exists, treat this as an urgent, unpatched issue for any internet-facing instance.

  1. Take the endpoint offline — restrict or disable public access to /delete_teacher.php at the web server or firewall level until it can be remediated.
  2. Patch the source directly — refactor the delete-teacher query to use parameterized statements / prepared queries instead of string concatenation.
  3. Validate input — reject any ID value that is not a positive integer before it reaches the database layer.
  4. Deploy a WAF rule to detect and block common SQL injection payloads targeting this endpoint.
  5. Review database logs for suspicious queries against the teacher table.
  6. Restrict database privileges for the application account — it should not have FILE privileges or the ability to read/write arbitrary paths.

Detection Indicators

IndicatorDescription
Requests to /delete_teacher.php with non-numeric ID valuesLikely exploitation attempts
SQL syntax fragments (UNION, SELECT, --, ') in access logs for this endpointInjection probing
Unexpected deletions in the teacher tablePossible successful exploitation

References