Lab 01
Lab 01
Chapter 2
Description:
• Kind of attack with adding and executing unintended code from untrusted
source
• Manipulate select statements
• Run DML or even DDL
• Run stored procedures
Go to c:\labs\ch2\lab.txt
And open txt file to show the results.
SQL injection
Create new user (db_sec):
Cmd> sqlplus / as sysdba – or username/password
SQL> Spool c:\labs\ch2\lab.txt;
END;
/
SQL injection
SQL> DECLARE
v_salary salary_injection_tb.salary%type;
BEGIN
GET_SALARY('ali',v_salary);
GET_SALARY(' '' OR person_id=123 --',v_salary);
END;
/
Prevent SQL injection
SQL> create or replace PROCEDURE get_salary (
P_PERSON_NAME IN SALARY_INJECTION_TB.PERSON_NAME%TYPE,
P_SALARY OUT SALARY_INJECTION_TB.SALARY%TYPE
)
IS
v_query VARCHAR2(2000);
BEGIN
v_query := 'SELECT SALARY INTO :P_SALARY FROM SALARY_INJECTION_TB
WHERE PERSON_NAME=:P_PERSON_NAME';
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');
END;
/
DECLARE
P_PERSON_NAME VARCHAR2(120);
P_SALARY NUMBER;
BEGIN
P_PERSON_NAME := 'CCCC'' OR PERSON_ID = 123 --';
GET_SALARY(
P_PERSON_NAME => P_PERSON_NAME,
P_SALARY => P_SALARY
);
END;
/