如何使用SQL注入接收SQL语法错误?

如何使用SQL注入接收SQL语法错误?

问题描述:

我正在做一些webpentesting练习,并且有一个任务说我需要使用SQL注入使用此名称和此密码创建一个新帐户。在网页上有一个文本输入用户名和另一个文本输入'密码'。我可以在用户名文本输入内输入任何我想要的字符,但在密码文本输入内需要输入特定的注入。如何使用SQL注入接收SQL语法错误?

我知道我需要注入插入查询,但事情是我不知道表名。为了插入一个新用户,我需要知道表名,所以我想知道如何让Web显示我显示的表名错误。

错误的表现应该是这样的:在语句命令 意外结束[SELECT * FROM(表名),其中...]

我想只有一个字符输入(也许> 1个字符为必填项)在密码区域内部使错误显示甚至删除参数文本输入密码。但它不会显示SQL语法错误。

所以问题是:我怎样才能利用利用漏洞使网页查看SQL语法错误显示表名称?

为什么不注入用户名字段,但它在密码字段?

第一件事是了解“应用程序”错误(例如,“用户不存在”)和执行错误之间的区别,其中应用程序自身失败,如您提到的“意外终止命令” 。从安全角度来看,第一种情况通常不是问题(除非应用程序编程非常糟糕),第二种情况可能会导致黑客入侵。

编程良好的Web应用程序理想情况下应该只有应用程序错误,但更现实的方法是应对意外的执行错误,而不会使其易受攻击。此外,应用程序应以不会导致执行错误的方式处理任何用户输入。

看起来,他们教你最容易犯SQL SQL注入的情况,应用程序比不对用户输入做任何处理(所以很容易把文本放在输入域中导致执行错误),以及不能处理执行错误(在这种情况下,向用户显示内部执行消息)。

Web应用程序中的一个常见错误是使用字符串连接构造SQL查询,因此使其失败的最简单方法是在字段中使用字符串分隔符('),导致字符串值过早结束。在一个草率的Web应用程序,它会导致执行错误,显示完整的错误信息,通常包括表名。

从那里您可以在输入字段中创建SQL查询,将用户插入表中,您可以在线查找示例(请注意,您至少需要有关SQL和PHP(或ASP,Java等)的基本知识。 ,为了执行SQL注入,因为您需要知道数据库访问如何工作才能使其失败)。

最后,SQL注入可以在任何未正确处理的输入字段中工作,但这取决于应用程序的编程方式。我想这两个字段都可以工作,但使用密码字段很容易,因为这可能是SQL查询中的最后一个字段。