SQL Injection is an attack of non-valid inputs passed through web application for execution by a backend database , simply It is a trick to inject data to SQL query/command as an input possibly via web pages.
Best example for this, when a user login the web page that user name and password and make SQL query to the database to check if a user has valid name and password. With SQL Injection, it is possible for us to send crafted user name and/or password field that will change the SQL query and grant us.
SQL Query :
sqlquery = “ SELECT USERNAME FROM USERLOGINTABLE WHERE USERNAME = ‘ “ + strusername + “ ’ AND PASSWORD = ‘“ + strpwd + “ ’ ”;
sqlqueryresult = GetQueryresult(sqlquery);
if (sqlqueryresult = string.empty)
Response.write(“User login failed”);
User passes ‘VIJI’ and ‘PASS’ as username and password respectively. If the user is a valid by executing the above SQL command, web page redirect to home page.
Look here, if user passes the below inputs Strusername as ‘ OR ‘ ‘ = ‘ and Strpwd as ‘ OR ‘ ‘ = ‘ then dynamic query will be
“ SELECT USERNAME FROM USERLOGINTABLE WHERE USERNAME = ‘ OR ‘ ‘ = ‘ AND PASSWORD = ‘ OR ‘ ‘ = ‘ “
Few judgment of this query:
- There is no syntax error
- There is no conflict between the operators.
- Inputs are not valid.
Web application will redirect the home page even input are invalid because result of the query will be true. The query compares the first single quotation and another quotation (means nothing) then OR is an operator. When comparing nothing to =, it returns true. Same execution is applied for password. These kind inputs are called vulnerable inputs to SQL commands.
SQL injection provides a facility to the net hackers to pull the data from the backend database by supplying the vulnerable inputs.
Will Continue writing on the
Attacks of the SQL Injection
- Select Command.
- Insert Command.
- Using SQL Stored Procedures.
and how to prevent SQL injection in the upcoming articles.