eCPPTv2-PTP-Notes
HomeGitHubPortfolioTwitter/XMediumCont@ct
  • 📝eCPPTv2 / PTP - Notes
  • 1️⃣1 - ​System Security
    • 1.1 Architecture Foundamentals
    • 1.2 Assemblers and Tools
    • 1.3 Buffer Overflow
    • 1.4 Cryptography
    • 1.5 Malware
    • 1.6 Shellcoding
  • 2️⃣2 - Network Security
    • 2.1 System/Host Based Attacks
      • 2.1.1 Windows Vulnerabilities
    • 2.2 Network Based Attacks
    • 2.3 The Metasploit Framework (MSF)
      • MSF Introduction
      • Information Gathering & Enumeration
      • Vulnerability Scanning
      • Client-Side Attacks
      • Post Exploitation
      • Armitage
    • 2.4 Exploitation
    • 2.5 - Post Expolitation / Pivoting
      • 2.5.1 Pivoting Guidelines
      • 2.5.2 Pivoting Example (3 Targets)
    • 2.6 Social Engineering
  • 3️⃣3 - PowerShell for PT
    • 3.1 PowerShell
  • 4️⃣4 - Linux Exploitation
    • 4.1 Linux Vulnerabilities
    • 4.2 Linux Exploitation
    • 4.3 Linux Post-Exploitation
    • 4.4 Linux Privilege Escalation
      • 4.4.1 Kernel Exploitation
      • 4.4.2 SUID Exploitation
      • 4.4.3 CronJobs
  • 5️⃣5 - Web App Security
    • 5.1 - Web App Concepts
      • 5.1.1 HTTP/S Protocol
      • 5.1.2 Encoding
      • 5.1.3 Same Origin
      • 5.1.4 Cookies
      • 5.1.5 Session
      • 5.1.6 Web App Proxies
    • 5.2 - Information Gathering
      • 5.2.1 Gathering Information on Your Targets
      • 5.2.2 Infrastructure
      • 5.2.3 Fingerprinting Frameworks and Applications
      • 5.2.4 Fingerprinting Custom Applications
      • 5.2.5 Enumerating Resources
      • 5.2.6 Information Disclosure Through Misconfiguration
      • 5.2.7 Google Hacking
      • 5.2.8 Shodan HQ
    • 5.3 - Cross Site Scripting
      • 5.3.1 XSS Anatomy
      • 5.3.2 Reflected XSS
      • 5.3.3 Stored XSS
      • 5.3.4 DOM-Based XSS
      • 5.3.5 Identifying & Exploiting XSS with XSSer
    • 5.4 - SQL Injection
      • 5.4.1 Introduction to SQL Injection
      • 5.4.2 Finding SQL Injection
      • 5.4.3 Exploiting In-Band SQL Injection
      • 5.4.4 Exploiting Error-Based SQL Injection
      • 5.4.5 Exploiting Blind SQL Injection
      • 5.4.6 SQLMap
      • 5.4.7 Mitigation Strategies
      • 5.4.8 From SQLi to Server Takeover
    • 5.5 - Other Common Web Attacks
      • 5.5.1 Session Attacks
      • 5.5.2 CSRF
  • 6️⃣6 - ​Wi-Fi Security
    • 6.1 Traffic Analysis
  • 7️⃣7 - ​Metasploit & Ruby
    • 7.1 Metasploit
  • 📄Report
    • How to write a PT Report
  • 🛣️RoadMap & My Experience
  • 📔eCPPT Cheat Sheet
Powered by GitBook
On this page
  • Mitigation Strategies
  • Prepared Statements
  • Type Casting
  • Input Validation
  1. 5 - Web App Security
  2. 5.4 - SQL Injection

5.4.7 Mitigation Strategies

Mitigation Strategies

Mitigating SQL injection vulnerabilities is crucial for securing web applications. Here are some effective strategies that can be proposed to clients to address and prevent SQL injection attacks:

Prepared Statements

Description:

  • What it is:

    • Prepared statements separate SQL code from user inputs by using bind variables.

    • This is considered the best solution to mitigate SQL injection.

  • Implementation Example (PHP):

    $sql = "INSERT INTO test_table VALUES (?, ?, ?, ?)";
    $sql_statement = $mysqli->prepare($sql);
    $sql_statement->bind_param('dsss', $user_id, $name, $address, $email);
    $user_id = $_POST['user_id'];
    $name = $_POST['name'];
    $address = $_POST['address'];
    $email =  $_POST['email'];
    $sql_statement->execute();

Recommendation:

  • Implementing prepared statements might require code refactoring but provides a robust long-term solution.

Type Casting

Description:

  • What it is:

    • Type casting involves explicitly converting user inputs to a specific data type, particularly useful for integer numbers.

  • Implementation Example (PHP):

    $user_id = (int) $user_id;

Recommendation:

  • Type casting offers a short-term method to prevent SQL injection, especially for numeric values.

Input Validation

Description:

  • What it is:

    • Input validation checks user inputs against a predefined set of rules, allowing only valid inputs.

  • Implementation Example (PHP):

    if (!preg_match('|^[a-z\s-]$|i', $name)) {
        die('Please enter a valid name');
    }

Recommendation:

  • Input validation acts as a good practice to supplement other security measures.

  • White-list-based validation, allowing only specific characters, can enhance security.

Previous5.4.6 SQLMapNext5.4.8 From SQLi to Server Takeover

Last updated 1 year ago

5️⃣