Junior-Offensive-analyst

SQL Injection Vulnerability Lab

Project Overview

This project demonstrates SQL injection vulnerabilities, exploitation techniques, and defensive measures. It showcases practical understanding of how SQL injection attacks work and how to prevent them.

Objectives

Vulnerability Categories Covered

1. Authentication Bypass

Vulnerable Code:

query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"
result = db.execute(query)

Attack Vector:

Remediation:

query = "SELECT * FROM users WHERE username=? AND password=?"
result = db.execute(query, (username, password))

2. Data Extraction

Vulnerable Code:

query = f"SELECT * FROM products WHERE id={product_id}"

Attack Vector:

Remediation:

3. Blind SQL Injection

Vulnerable Code:

query = f"SELECT * FROM users WHERE email='{email}'"
# No feedback, but query executes

Attack Vector:

Remediation:

Defense Strategies

1. Parameterized Queries (Prepared Statements)

# Safe approach
cursor.execute("SELECT * FROM users WHERE id = ?", (user_id,))

2. Input Validation

3. Least Privilege Principle

-- Create database user with minimal permissions
CREATE USER readonlyuser IDENTIFIED BY 'password';
GRANT SELECT ON database.* TO readonlyuser;

4. Web Application Firewall (WAF)

5. Output Encoding

Tools & Technologies

Testing Methodology

Manual Testing

  1. Test input fields with SQL metacharacters: ' " ; --
  2. Attempt UNION-based injection
  3. Test blind injection with time delays
  4. Analyze error messages for information leakage

Automated Testing

sqlmap -u "http://target.com/product?id=1" --dbs
sqlmap -u "http://target.com/login" -data "username=admin&password=test" --forms

Key Takeaways

References

Last Updated

February 2026