目前我正在做一个关于 SQL 注入的项目。我这样做的方式是它会发现独立于服务器端脚本的 SQL 注入。无论它可能是 jsp、asp 还是 php。现在的主要问题是我必须从网页中提取 SQL 查询。例如,当我按下提交按钮时,从 Web 服务器到数据库的请求将以 sql 语句的形式发送。所以我的问题是捕获那个 sql 语句
关于如何做的任何建议?
提前致谢
目前我正在做一个关于 SQL 注入的项目。我这样做的方式是它会发现独立于服务器端脚本的 SQL 注入。无论它可能是 jsp、asp 还是 php。现在的主要问题是我必须从网页中提取 SQL 查询。例如,当我按下提交按钮时,从 Web 服务器到数据库的请求将以 sql 语句的形式发送。所以我的问题是捕获那个 sql 语句
关于如何做的任何建议?
提前致谢
您无法捕获基于服务器的 SQL 脚本,并且任何在 Javascript 中生成 SQL 的网站都只是要求您破坏他们的网站。
您可以在 Web 应用程序和 rdbms 之间放置一个代理。一些系统(例如 MySql)带有这样的代理。
一些 RDBMS 具有记录执行的 SQL 查询的功能(例如 SQL Server 具有 SQL Server Profiler)。如果您的 RDBMS 没有此功能,您可以使用网络中的某个代理(Web 应用程序---->您的代理---->RDBMS)捕获 SQL 查询。
您应该将输入值和记录的查询配对。
在代码中搜索 SQL 查询的问题非常复杂,我认为不可能。SQL 查询不能是纯文本形式,也不能是动态创建的。
例如:
// this will produce SQL query
from p in db.Products where p.Size > 1000 && p.Count < 5 order by p.Name select p;
// this will not produce any SQL query
from c in ColumnsOf( db.Products ) where c.Contains( "Name" ) select c.Type;
// this will produce SQL query
var tmp = "SELECT ";
for(int i = 0; i < columns.Length; i++ ) {
if ( i > 0 ) { tmp += ", "; }
tmp += columns[i].Name;
}
tmp += "FROM " + someTextVariable;