SQL injection is a technique that exploits applications that use relational databases by allowing SQL statements to pass through user input and directly query the database. It occurs when untrusted data enters an application and is used to dynamically construct SQL queries without proper sanitization. Susceptible locations include login pages, form fields, search pages, and query strings. There are two categories - passive SQL injection reveals database information through errors or blind techniques, while active SQL injection can alter database information by exploiting stored procedures. Blind SQL injection retrieves data without errors by writing queries after the "AND" clause.