从独立于脚本语言的网页中提取 SQL 查询

发布于 2024-08-04 23:45:42 字数 195 浏览 14 评论 0原文

目前我正在做一个关于SQL注入的项目。我这样做的方式是它会发现独立于服务器端脚本的 SQL 注入..无论它是 jsp、asp 还是 php。现在主要的问题是我必须从网页中提取 SQL 查询。例如,当我按下提交按钮时,从Web服务器到数据库的请求将以sql语句的形式发送。所以我的问题是捕获该sql语句

关于如何做到这一点有什么建议吗?

提前致谢

At present i am doing a project regarding SQL injection. I am doing it in such a way that it will find the SQL injection independent of the server side scripting.. whether it may be jsp or asp or php. Now the major problem is I have to extract the SQL query from the web page. That is when i press submit button for instance, the request from the web server to the database will be sent in the form of sql statement. So my problem is to capture that sql statement

Any suggestions of how to do it?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

尐偏执 2024-08-11 23:45:42

您无法捕获基于服务器的 SQL 脚本,任何用 Javascript 生成 SQL 的网站都只是要求您破坏他们的网站。

You can't capture a server based SQL script, and any website that generates the SQL in Javascript is just asking you to brea ktheir site.

怪我鬧 2024-08-11 23:45:42

您可以在 Web 应用程序和 RDBMS 之间放置代理。某些系统(MySql 例如)带有这样的代理。

You can put a proxy between your web application and the rdbms. Some systems (MySql for example) come with such a proxy.

吻安 2024-08-11 23:45:42

一些 RDBMS 具有记录执行的 SQL 查询的功能(例如 SQL Server 具有 SQL Server Profiler)。如果您的 RDBMS 没有此功能,您可以使用网络中的某个代理捕获 SQL 查询(Web 应用程序 ----> 您的代理 ----> RDBMS)。

您应该将输入值和记录的查询配对。

在代码中搜索 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;

Some RDBMS have feature of recording executed SQL queries (SQL Server has the SQL Server Profiler for example). If your RDBMS does not have this feature, you can catch the SQL queries with some proxy in the network (web application ----> your proxy ----> RDBMS).

You should pair the input values and recorded queries.

The problem with searching the SQL queries in code is very complex and I think impossible. The SQL query must not be in plain text form or can be created dynamically.

For example:

// 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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文