这是什么类型的数据库,可能是SQL注入?

时间:2014-06-25 20:05:11

标签: sql sql-injection

我的新网站由私人公司管理。

今天早上我意外地将双重报价放入网址(“)并变成如下错误:

网址:http://domain.com/sys.aspx?page=5&search=1"

Server Error in '/' Application.

Syntax error near '"' in the full-text search condition '1"'.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: Syntax error near '"' in the full-text search condition '1"'.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[SqlException (0x80131904): Syntax error near '"' in the full-text search condition '1"'.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +212
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +245
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2811
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +58
   System.Data.SqlClient.SqlDataReader.get_MetaData() +112
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6281668
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +6282737
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +424
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +28
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +211
   System.Data.SqlClient.SqlCommand.ExecuteReader() +117
   Pazar3.list.Page_Load(Object sender, EventArgs e) in E:\mudi\ker_ss\Solution\trunk\sys.aspx.cs:119
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
   System.Web.UI.Control.OnLoad(EventArgs e) +132
   System.Web.UI.Control.LoadRecursive() +66
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428

Version Information: Microsoft .NET Framework Version:2.0.50727.4984; ASP.NET Version:2.0.50727.4971

我的问题是这是什么类型的数据库,可能是SQL INJECTION?

3 个答案:

答案 0 :(得分:1)

  

我只是打电话给他们,他们告诉我'我们使用mysql'。这是对的吗?

他们可以在他们的网站上同时使用MySQL和SQL Server。不太可能 - 但可能

我认为他们更有可能犯了一个错误。我听过一些IT人员说" MySQL"当他们实际使用Microsoft SQL Server时。

错误消息Syntax error near 'XXXX' in the full-text search condition 'YYYY', 看起来像Microsoft SQL Server错误消息。如果您search StackOverflow for that error message(减去特定模式),您只会发现Microsoft SQL Server问题。

您可以在具有CONTAINS()功能的模式中使用双引号,以便搜索短语(请参阅示例here)。我假设当你的模式包含不平衡的双引号时,CONTAINS()函数不喜欢它,并且它会引发异常。

此外,类System.Data.SqlClient看起来像.NET类,使用.NET与Microsoft SQL Server后端而不是MySQL后端更常见(尽管后者是可能的,它并不常见)。

MySQL还有全文搜索功能,但如果你在搜索模式中提供不平衡的双引号,MySQL 不会抛出错误

他们可能正在将MySQL用于其网站的其他部分,但您看到的错误似乎是Microsoft SQL Server错误。

是SQL注入漏洞吗?不必要。他们的应用程序可能使用预准备语句和搜索模式的查询参数安全地传递模式。因此,它可能没有SQL注入本身的风险(即用户无法提交使查询执行除搜索模式之外的其他操作的字符串),但应用程序不会阻止用户提交导致异常的无效搜索模式。

简而言之,我们无法从错误消息中确定它是否是SQL注入漏洞,因为即使使用参数执行查询,也可能会得到相同的错误。

答案 1 :(得分:0)

Microsoft SQL Client与MS SQL服务器交谈

是的,你已经证明了SQL注入,进入FULL TEXT搜索表达式,而不是SQL语句 - 这可能同样糟糕,但我不能说。

答案 2 :(得分:0)

您输入的URL是将参数传递给SQL服务器。

名为Search的参数正在传递值1,直到您不小心输入代码不知道如何处理的双引号。

您可能输入“search = 1; DROP TABLE Users; - ”,如果没有安全编写鳕鱼,则可能会丢弃一个名为users的表。

所以是的,这可能存在SQL注入攻击的风险