SQL Injection OWASP Top 10 Data Breach 12 min read

SQL Injection: How One Input Field Gives Hackers Your Entire Database

OWASP's #1 vulnerability for over a decade — and still devastating companies today.

VP

Vlad Piskun

Security Researcher, Teyna

SQL injection has held the top spot in the OWASP Top 10 list of critical web vulnerabilities for over a decade. Despite being one of the oldest attack techniques — first documented in 1998 — it continues to devastate organizations of all sizes. In 2023, the Verizon Data Breach Investigations Report found that web application attacks, with injection at the core, accounted for over 26% of all breaches. The reason? Most developers understand the theory but don't apply the fixes consistently. One unsanitized input field is all it takes.

What Is SQL Injection?

SQL injection (SQLi) is an attack where a malicious actor inserts — or "injects" — crafted SQL code into an input field that gets incorporated into a database query. Instead of the application treating user input as data, it executes it as SQL commands. The result: an attacker can bypass authentication, extract entire databases, modify records, delete data, or in some cases, execute commands on the underlying operating system.

  • Login bypasses — log in as any user without knowing their password
  • Data extraction — dump entire tables: usernames, emails, passwords, payment data
  • Data modification — change prices, account balances, access permissions
  • Data deletion — wipe tables, audit logs, or entire databases
  • Authentication token forgery — steal session IDs and impersonate users
  • OS command execution — in misconfigured databases, gain shell access to the server
1-- Legitimate query
2SELECT * FROM users WHERE username = 'alice' AND password = 'secret';
3
4-- Attacker enters: ' OR '1'='1' --
5-- Resulting query becomes:
6SELECT * FROM users WHERE username = '' OR '1'='1' --' AND password = '';
7
8-- '1'='1' is always true → attacker logs in as the FIRST user in the table
9-- Usually that's the administrator account

The classic login bypass. The '--' comment marker causes the password check to be ignored entirely.

Find out right now — does your site have SQL injection vulnerabilities?

Check now

How SQL Injection Works — The 3 Attack Types

1. Classic (In-Band) SQL Injection

The most straightforward type. The attacker submits malicious SQL through an input field (search box, login form, URL parameter) and receives the database output directly in the HTTP response. For example, appending ' UNION SELECT username, password FROM users-- to a product ID parameter can return all user credentials on the same page as the normal product listing. This is how the Yahoo Voice breach worked in 2012.

2. Blind SQL Injection

No data is returned directly in the response, but the attacker can still extract information by asking yes/no questions. For example: ' AND SUBSTRING(username,1,1)='a'--. If the page returns normally, the first character is 'a'. If it errors, it isn't. By iterating through all characters of all fields, attackers can reconstruct the entire database — it just takes more requests. Modern tools like SQLmap automate this entirely.

3. Time-Based Blind SQL Injection

When no visible difference exists in the response, attackers use time delays. The payload '; IF(1=1) WAITFOR DELAY '0:0:5'-- causes the server to pause 5 seconds if the condition is true. By encoding database values as timing differences, attackers extract data even from applications that return identical responses for valid and invalid queries. Heartland Payment Systems was compromised using techniques related to this approach.

What an Attacker Gets — And How Fast

A successful SQL injection isn't just a data leak. It's a complete loss of database control:

Step 1

Attacker finds a vulnerable parameter — a login field, search box, or URL parameter that reflects database output.

Step 2

SQLmap or manual testing confirms the injection point. In automated attacks, this takes under 60 seconds.

Step 3

The attacker enumerates: database version, database names, table names, column names.

Step 4

Data extraction begins. All user records, hashed passwords, emails, payment tokens — dumped to attacker's machine.

Step 5

Attacker uses admin credentials to access your CMS, upload a webshell, and establish persistent access to your server.

Source: OWASP SQL Injection Testing Guide; Verizon DBIR 2023

Real Cases: Billions in Damage from SQL Injection

Heartland Payment Systems (2008)

One of the largest data breaches in history. Attackers exploited an SQL injection vulnerability in Heartland's web application to install malware on the payment processing network. The result: 130 million credit and debit cards compromised across hundreds of banks and financial institutions. The total cost to Heartland: over $140 million in fines, settlements, and security overhaul. The company's stock lost 75% of its value within days of disclosure.

Wired — The Hacking of Heartland

Yahoo Voice (2012)

Using a basic union-based SQL injection attack on Yahoo's Voices platform (formerly Associated Content), attackers extracted a database containing 450,000 plaintext usernames and passwords. The credentials were published publicly online. The attack required no advanced technique — just a single vulnerable input field and a union SELECT statement. Yahoo had no parameterized queries protecting that endpoint.

Naked Security / Sophos

Sony PlayStation Network (2011)

Attackers used SQL injection as part of a multi-vector attack against Sony's PlayStation Network infrastructure. The breach exposed personal data of 77 million accounts — names, addresses, email addresses, birthdates, and potentially credit card information. Sony took the PSN offline for 23 days. Total damages were estimated at $171 million. Sony was also fined £250,000 by the UK Information Commissioner's Office for failing to keep customer data secure.

IBM X-Force Threat Intelligence

The Financial Impact of SQL Injection Breaches

SQL injection attacks are among the most costly security incidents organizations face:

MetricValueSource
Heartland Payment Systems breach cost$140M+Company filings, 2008–2010
Sony PSN breach total damages$171MReuters, 2011
Average cost of a web app breach$4.45MIBM Cost of a Data Breach 2023
Share of breaches involving web app attacks26%+Verizon DBIR 2023
SQL injection's rank in OWASP Top 10#3 (Injection)OWASP Top 10, 2021

SQL injection is 27 years old. It should be solved. The fact that it still causes $100M+ breaches in 2024 is a failure of implementation, not knowledge.

Check Your Site for SQL Injection Right Now

Teyna automatically tests every parameter, form field, and endpoint for SQL injection and 50+ other vulnerabilities.

First scan is free. Results in under 10 minutes.

Start Free Scan →

No registration required. Non-destructive. No disruption to your service.

Teyna Detection

How Teyna Detects SQL Injection in Your Application

Teyna's scanner combines SQLmap-based detection with a custom library of over 500 injection payloads specifically crafted for modern web frameworks. Every input field, URL parameter, HTTP header, and cookie value is tested. Teyna checks for classic, blind, time-based blind, and out-of-band injection vectors. If a parameter is vulnerable — even if it only responds with a 1-millisecond timing difference — Teyna flags it as Critical with full reproduction steps.

[CRITICAL] SQL Injection — Time-Based Blind
URL: https://example.com/products?id=42
Parameter: id
Payload: 42' AND SLEEP(5)--
Response time: 5.2s (baseline: 0.1s)
Database: MySQL 8.0
Risk: Full database extraction, authentication bypass, potential RCE
Remediation: Use parameterized queries / prepared statements for ALL database interactions

Every parameter. Every endpoint. You know before the attacker does.

What Else Teyna Checks in a Single Scan

criticalExposed admin panels — full site control available without authentication
criticalExposed .env files — database passwords, API keys, cloud credentials in plain text
criticalXSS vulnerabilities — session hijacking, credential theft, malicious script injection
highOutdated components with known CVEs — Log4Shell, Spring4Shell, Struts exploits
highBroken authentication — weak session tokens, missing rate limiting on login
mediumCORS misconfiguration — cross-origin data theft from authenticated users
mediumMissing security headers — clickjacking, XSS, MIME sniffing risks
lowInformation disclosure — server version, framework details visible in responses

How to Fix SQL Injection — 5 Concrete Steps

1

Use parameterized queries everywhere

This is the only reliable fix. Never concatenate user input into SQL strings. Use prepared statements in every database interaction, without exception:

// VULNERABLE — never do this
const query = "SELECT * FROM users WHERE email = '" + email + "'";
// SAFE — parameterized query
const query = "SELECT * FROM users WHERE email = ?";
db.execute(query, [email]);
2

Use an ORM (Object-Relational Mapper)

ORMs like Sequelize, Hibernate, SQLAlchemy, or ActiveRecord generate parameterized queries automatically. They don't eliminate the risk entirely (raw query methods still exist), but they make the safe path the default path.

3

Implement input validation and allowlisting

Validate that inputs conform to expected formats before they reach the database layer. If a field should contain an integer, reject anything that isn't an integer. Allowlisting expected values is far more reliable than blocklisting known attack strings.

4

Apply the principle of least privilege to database accounts

Your web application's database account should only have the permissions it needs. If it only needs to read from certain tables, it should not have INSERT, UPDATE, DELETE, or DROP privileges. A successful SQL injection against a read-only account cannot modify or destroy data.

5

Run automated security scans after every deployment

New endpoints get added. Old code gets refactored. Parameters get added to URLs. Manual code review doesn't scale. Automated scanning after every deployment catches new injection points before they're found by attackers.

Frequently Asked Questions

Check Your Site for SQL Injection Right Now

Teyna automatically tests every parameter, form field, and endpoint for SQL injection and 50+ other vulnerabilities.

First scan is free. Results in under 10 minutes.

Start Free Scan →

No registration required. Non-destructive. No disruption to your service.