November 1, 2026
๐ My First Published CVE: Discovering SQL Injection in Grocery Store Management System v1.0
From vulnerability discovery to responsible disclosure โ my journey as an independent cybersecurity researcher.

By Dhyey Patel
10 min read
๐ My First Published CVE: Discovering SQL Injection in Grocery Store Management System v1.0 (CVE-2026-37149)
Author: Dhyey Patel Research: Web Application Security | SQL Injection | Vulnerability Research CVE ID: CVE-2026-37149 Vulnerability Classification: CWE-89 โ Improper Neutralization of Special Elements Used in an SQL Command
๐งโ๐ป Introduction: The Beginning of My Vulnerability Research Journey
Cybersecurity is a field where curiosity, technical knowledge, patience, and continuous learning come together.
As someone passionate about offensive security, web application security, penetration testing, and vulnerability research, I have always been interested in understanding how applications work internally and what happens when security controls fail.
Learning about vulnerabilities theoretically is important, but discovering and investigating an actual security weakness provides an entirely different experience.
Every web application accepts input, processes requests, communicates with databases, and returns responses. If developers do not handle user-controlled input securely, seemingly ordinary application functionality can become an attack surface.
During my vulnerability research, I investigated a PHP and MySQL-based application called Grocery Store Management System v1.0.
My investigation identified a SQL Injection vulnerability involving the "scost" parameter in the application's product-search functionality.
The finding was documented under:
- CVE-2026-37149
This article documents my research, the affected functionality, the underlying security concept, my testing methodology, the potential impact, and the lessons I learned during the process.
This is my first-person research case study based on my own CVE documentation.
๐ท๏ธ 1. Vulnerability Overview
Before discussing the technical investigation, here is a summary of the vulnerability.
Attribute| Details CVE ID| CVE-2026-37149 Researcher| Dhyey Patel Vulnerability| SQL Injection CWE| CWE-89 Affected application| Grocery Store Management System Affected version| v1.0 Technology| PHP and MySQL Affected endpoint| "/grocery/search_products.php" Vulnerable parameter| "scost" Request method| POST Potential impact| Unauthorized database access CVE publication date| June 25, 2026 CVE status| Published
Official references:
- CVE Record: https://www.cve.org/CVERecord?id=CVE-2026-37149
- Research repository: https://github.com/pateldhyeyit/CVE-2026-37149
- GitHub Advisory: https://github.com/advisories/GHSA-jmpp-r595-xrp4
๐ง 2. Understanding SQL Injection
To understand the vulnerability, it is important to understand SQL Injection first.
SQL Injection is a web application security vulnerability that occurs when an application incorporates untrusted input into an SQL query without properly separating data from executable SQL instructions.
Applications commonly use SQL databases to store and retrieve information.
For example, a grocery management application may use a database to manage:
- Product information
- Product categories
- Product prices
- Inventory records
- Customer information
- Orders and transactions
- Administrative information
When a user searches for a product, the application receives input and processes a database query.
A simplified example of an unsafe PHP implementation might look like this:
This is an illustrative example of an unsafe coding pattern, not a verified reproduction of the application's exact source code.
Why is this dangerous?
The application places user-controlled data directly inside an SQL statement.
Instead of treating the supplied value exclusively as data, the database may interpret specially crafted input as part of the SQL command.
This creates an opportunity for an attacker to influence the intended database operation.
A secure application should ensure that user input cannot change the structure or intended meaning of a database query.
The fundamental problem is the failure to separate SQL instructions from untrusted data.
๐ 3. Understanding the Affected Application
The application involved in my research is:
Grocery Store Management System Using PHP and MySQL with phpMyAdmin โ Version 1.0
The original project is available here:
https://github.com/anirudhkannanvp/GROCERY-STORE-MANAGEMENT-SYSTEM-USING-PHP-AND-MYSQL-PHPMYADMIN-
This project is a PHP-based grocery management application that uses MySQL for database operations.
The application includes product-management and product-search functionality.
Product-search functionality is particularly interesting from a security perspective because it processes multiple user-controlled parameters.
For example, a search request may contain information related to:
- Product category
- Product cost
- Product name
- Product identifier
Every parameter that reaches a database query should be treated as untrusted until it has been handled securely.
The affected component
My research identified the following component:
/grocery/search_products.php
The vulnerable POST parameter documented in my CVE is:
scost
The important distinction is that the CVE concerns the "scost" parameter, not every parameter accepted by the product-search functionality.
๐ฏ 4. Identifying the Attack Surface
An attack surface is the collection of application components, interfaces, and inputs through which an application can be interacted with.
During web application security assessments, identifying the attack surface is an important initial step.
For a PHP application, potential areas of investigation include:
- HTTP GET parameters.
- HTTP POST parameters.
- Search functionality.
- Login and registration forms.
- Product filters.
- Database-backed API endpoints.
- File-upload functionality.
- Administrative functionality.
For this research, the relevant functionality was the product-search endpoint.
The request structure documented in my repository is:
POST /grocery/search_products.php HTTP/1.1 Host: localhost X-Requested-With: XMLHttpRequest Content-Type: application/x-www-form-urlencoded
scategory=1& scost=[controlled-test-value]& sitem_name=test& spid=1& submit=Search%20For%20products
The parameter of interest was "scost".
The security question was straightforward:
Does the application handle the supplied value as ordinary data, or can the value influence the SQL query's logical structure?
That question guided the investigation.
๐งช 5. Technical Investigation: SQL Injection in "scost"
The vulnerability documented in CVE-2026-37149 involves improper handling of the "scost" parameter.
The official CVE description identifies SQL Injection in:
/grocery/search_products.php
Parameter:
scost
The underlying weakness is classified as CWE-89.
What is CWE-89?
CWE-89 describes improper neutralization of special elements used in SQL commands.
In practical terms, an application constructs an SQL query using externally controlled input without correctly preventing that input from changing the intended SQL statement.
Consider the following conceptual example:
SELECT * FROM products WHERE cost = USER_INPUT;
If the application constructs this query through unsafe string concatenation, user-controlled input may alter the query's intended logic.
A properly designed implementation must preserve the distinction between:
- SQL query structure
- User-supplied values
- Database operations
This is why parameterized queries are essential.
Boolean-based SQL Injection
Boolean-based SQL Injection is a testing technique in which the researcher evaluates whether an injected logical condition affects the application's response.
The concept involves comparing two conditions:
- A condition expected to evaluate to TRUE.
- A condition expected to evaluate to FALSE.
If the application behaves differently depending on the logical result, this may provide evidence that the input influences SQL query execution.
For a controlled security assessment, the researcher should compare:
- The normal application response.
- The response under a controlled true-condition test.
- The response under a controlled false-condition test.
Response differences should be repeatable and attributable to the tested input, rather than unrelated application behavior.
Research note: The TRUE/FALSE payload examples currently present in my GitHub README require correction and independent retesting before they can be presented as a verified proof of Boolean-based SQL Injection. I am not reproducing them as confirmed payloads here.
๐๏ธ 6. Database Interaction and Potential Exposure
SQL Injection can have consequences beyond the product-search functionality itself.
The impact depends on the SQL query, database permissions, application architecture, and the privileges available to the database account.
Possible consequences include:
6.1 Database Information Disclosure
An attacker may be able to access information that the application was not intended to expose.
Depending on the vulnerability and database permissions, this could include:
- Database names
- Table structures
- Column information
- Product records
- Other sensitive application data
6.2 Database Enumeration
Database enumeration involves gathering information about the database environment.
Researchers may investigate database metadata in an authorized laboratory environment to understand the scope of a vulnerability.
For example, MySQL provides functions that reveal information about the current database context.
SELECT DATABASE();
My repository documents retrieval of the database name "grocery".
This is relevant because it illustrates how SQL Injection can potentially expose information about the backend database environment.
6.3 Unauthorized Data Access
If an attacker can influence database queries, the application may expose records outside the intended search results.
The actual exposure depends on the affected query and database permissions.
6.4 Data Integrity Risks
Some SQL Injection vulnerabilities can potentially allow unauthorized modification of database records.
However, the ability to modify information must be demonstrated separately. It should not be assumed merely because SQL Injection has been identified.
6.5 Broader Application Security Consequences
In a production environment, a database may contain important business information.
An exploitable SQL Injection weakness can therefore create risks for confidentiality, integrity, and potentially availability, depending on the available database operations.
โ ๏ธ 7. Security Impact and Risk Assessment
The impact of SQL Injection should be assessed based on demonstrated technical capabilities rather than assumptions.
For this vulnerability, the published CVE description identifies potential access to sensitive database information.
The primary security concern is that user-controlled input can influence backend SQL query processing.
The following security properties are relevant:
Security property| Potential concern Confidentiality| Unauthorized information disclosure Integrity| Unauthorized database modification, if supported by the query and permissions Availability| Potential database disruption, depending on exploitability
Why should developers take this seriously?
Even a relatively small input-handling weakness can create a significant security problem when the affected endpoint has access to important database records.
A product-search page might appear harmless, but its backend database interaction can expose information if SQL queries are constructed insecurely.
Security should therefore be implemented at the database-access layer, not only at the user-interface layer.
๐ก๏ธ 8. Root Cause: Improper SQL Query Construction
The fundamental security weakness associated with this finding is CWE-89.
Applications should never rely on the assumption that user input is safe simply because it comes from a search form or a numeric field.
Client-side validation is not a security boundary.
An attacker can send HTTP requests directly without using the application's normal interface.
The backend must independently validate and safely process every input.
Common insecure development practices
- Direct concatenation of user input into SQL statements.
- Missing parameterized queries.
- Trusting client-side validation.
- Incorrect handling of numeric parameters.
- Inadequate server-side validation.
- Excessive database privileges.
The most important remediation is to use parameterized SQL statements.
๐ง 9. Remediation: How Developers Should Fix SQL Injection
Developers should implement secure database-access practices.
9.1 Use Prepared Statements
Prepared statements separate SQL instructions from user-supplied values.
A PHP PDO example:
prepare($sql); $stmt->execute([ ':cost' => $cost ]); $results = $stmt->fetchAll(); ?>In this example, the supplied value is passed separately from the SQL statement.
The database driver handles the parameter as data rather than treating it as part of the SQL command.
9.2 Validate Input on the Server
If the application expects a numeric product cost, the backend should enforce an appropriate numeric format.
For example:
Input validation is useful, but it should complement prepared statements rather than replace them.
9.3 Apply Least Privilege
The database account used by the application should have only the permissions required for its normal operation.
A product-search feature generally should not need unrestricted administrative database privileges.
9.4 Handle Database Errors Securely
Applications should not expose detailed SQL errors, database credentials, internal file paths, or stack traces to ordinary users.
Detailed errors should be recorded in protected server-side logs.
9.5 Conduct Security Testing
Developers should test database-backed functionality using:
- Code review
- Static analysis
- Dynamic application security testing
- Authorized penetration testing
- Regression testing
Fixes should be verified against the original vulnerability and other related input-handling weaknesses.
๐ 10. Responsible Vulnerability Research
Finding a vulnerability is only one part of security research.
Responsible disclosure is equally important.
Security researchers should follow an ethical process:
- Identify a potential vulnerability.
- Reproduce it in an authorized environment.
- Collect sufficient technical evidence.
- Assess the potential security impact.
- Avoid unnecessary access to sensitive information.
- Document the finding clearly.
- Follow applicable disclosure and reporting procedures.
- Coordinate with the appropriate parties.
- Publish technical information responsibly.
During vulnerability research, it is important to remember that discovering a security weakness does not grant permission to access, extract, modify, or disclose another party's private information.
Research should remain within authorized boundaries.
๐ท๏ธ 11. Understanding the CVE Publication
One of the important milestones in this research was receiving a public CVE identifier.
CVE-2026-37149
CVE stands for Common Vulnerabilities and Exposures.
The CVE Program provides standardized identifiers for publicly disclosed cybersecurity vulnerabilities.
A CVE identifier helps security professionals, developers, vulnerability databases, and organizations refer to a particular vulnerability consistently.
My finding is publicly documented under CVE-2026-37149.
Official record:
https://www.cve.org/CVERecord?id=CVE-2026-37149
GitHub repository:
https://github.com/pateldhyeyit/CVE-2026-37149
The CVE record identifies the affected product, version, endpoint, vulnerable parameter, and SQL Injection weakness.
Receiving a published CVE was an important milestone in my journey as an independent security researcher.
It also reinforced the importance of documenting research in a clear, reproducible, and technically responsible manner.
๐งฌ 12. What I Learned from This Research
Every vulnerability investigation provides an opportunity to improve technical skills.
This research helped reinforce several important concepts.
- Understanding HTTP Requests
Understanding how POST parameters are transmitted and processed is essential for web application security testing.
- Understanding SQL Query Construction
A researcher should understand how applications interact with databases and how unsafe query construction introduces security weaknesses.
- Understanding CWE Classification
CWE-89 provides a standardized classification for SQL Injection weaknesses.
- Evidence-Based Vulnerability Validation
A vulnerability should be supported by reproducible evidence rather than assumptions.
- Responsible Disclosure
Technical discovery and responsible reporting are both essential parts of professional security research.
- Technical Documentation
A good vulnerability report should clearly describe the affected component, parameter, impact, reproduction conditions, and remediation.
๐ 13. My Journey Ahead
This is my first published CVE, but it is not the end of my vulnerability research journey.
I intend to continue learning and exploring areas such as:
- Web application penetration testing
- SQL Injection and other injection vulnerabilities
- Cross-Site Scripting (XSS)
- Server-Side Request Forgery (SSRF)
- Authentication and authorization vulnerabilities
- API security
- Active Directory security
- Vulnerability research and responsible disclosure
- Application Security Engineering
My long-term objective is to improve as a security researcher and contribute meaningful security findings to the cybersecurity community.
I believe that every vulnerability investigated, every report written, and every technical concept understood contributes to becoming a better security professional.
๐ 14. Research References and Resources
The following resources provide additional technical information about this research.
My CVE and research
- Official CVE record: https://www.cve.org/CVERecord?id=CVE-2026-37149
- GitHub PoC and documentation: https://github.com/pateldhyeyit/CVE-2026-37149
- LinkedIn: https://linkedin.com/in/dhyey-patel-it
- GitHub profile: https://github.com/pateldhyeyit
Technical references
- OWASP SQL Injection: https://owasp.org/www-community/attacks/SQL_Injection
- MITRE CWE-89: https://cwe.mitre.org/data/definitions/89.html
- PHP PDO documentation: https://www.php.net/manual/en/book.pdo.php
- PHP MySQLi prepared statements: https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
- OWASP SQL Injection Prevention Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html
Affected open-source project
https://github.com/anirudhkannanvp/GROCERY-STORE-MANAGEMENT-SYSTEM-USING-PHP-AND-MYSQL-PHPMYADMIN-
๐ก Final Thoughts
My first published CVE represents an important milestone in my cybersecurity journey.
CVE-2026-37149 gave me an opportunity to investigate a real-world software security weakness, understand how SQL Injection affects database-backed applications, and document a vulnerability through the CVE ecosystem.
One important lesson from this experience is that security is not just about finding a payload that works. It is about understanding the underlying vulnerability, validating the evidence, explaining the impact, and helping developers build more secure software.
I am continuing my journey in vulnerability research, offensive security, and application security. This is just the beginning. Research. Investigate. Validate. Document. Secure.
This is just the beginning.
Research. Investigate. Validate. Document. Secure.
๐จโ๐ป About the Author Dhyey Patel is an independent cybersecurity researcher and B.Tech Information Technology student interested in offensive security, vulnerability research, penetration testing, and application security.
He is the discoverer credited for CVE-2026-37149 and shares cybersecurity research, technical projects, and security knowledge with the community.
GitHub: https://github.com/pateldhyeyit LinkedIn: https://linkedin.com/in/dhyey-patel-it
If you found this research useful, feel free to share it with the cybersecurity community. Feedback and technical discussions are welcome.
#CyberSecurity #CVE #SQLInjection #VulnerabilityResearch #AppSec