当前位置: 首页 > 知识库问答 >
问题:

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

李奕
2023-03-14

我正在做一些webpenting练习,有一个任务说我需要通过使用SQL注入来创建一个具有这个名称和这个密码的新帐户。在网页上有一个文本输入用户名和另一个文本输入“密码”。我可以在用户名文本输入中输入任何我想要的字符,但在密码文本输入中,我需要键入一个特定的注入。

我知道我需要注入insert查询,但问题是我不知道表名。为了插入一个新用户,我需要知道表名,所以我想知道如何才能使web显示一个带有tablename的错误。

显示的错误如下:语句[SELECT*FROM(tablename)WHERE...]中的命令出现意外结尾

我尝试在password字段中输入一个字符(可能需要>1个字符),以使错误显示,甚至删除参数文本输入password。但它不会显示SQL语法错误。

所以问题是:如何利用该漏洞使网页查看表名显示的SQL语法错误?

为什么在用户名字段注入不起作用,而在密码字段却起作用呢?

共有1个答案

宇文卓
2023-03-14

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

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

似乎他们在教你最明目张胆的情况,允许SQL注入,应用程序不对用户输入做任何处理(所以很容易将文本放入输入字段,导致执行错误),并且不处理执行错误(在本例中,向用户显示内部执行消息)。

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

然后在输入字段中创建一个SQL查询,将用户插入到表中,您可以在网上找到示例(注意,为了进行SQL注入,您至少需要SQL和PHP(或ASP、Java等)方面的基本知识,因为您需要知道数据库访问是如何工作的,以便使其失败)。

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

 类似资料:
  • 本文向大家介绍什么是sql注入?如何避免sql注入?相关面试题,主要包含被问及什么是sql注入?如何避免sql注入?时的应答技巧和注意事项,需要的朋友参考一下 用户根据系统的程序构造非法的参数从而导致程序执行不是程序员期望的恶意SQL语句。使用参数化的SQL就可以避免SQL注入。 详细参考复习ppt。举例子,摆事实! 1' or 1=1

  • 问题内容: 在下面的示例代码中,表名称是一个输入参数。在这种情况下,如何避免使用进行SQL注入。下面是示例代码,我尝试使用它来避免它,但是它不起作用。谁能告诉我如何纠正它? 输出:打印消息: 所有输入参数将完全替换,并删除一行。请让我知道如何处理这种情况。 问题答案: 您可以将表名包含在 但是,如果使用两部分命名约定,例如,则必须添加其他解析,因为这将导致: 无效的对象名称[dbo.tablena

  • 本文向大家介绍C#使用带like的sql语句时防sql注入的方法,包括了C#使用带like的sql语句时防sql注入的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例叙述了在拼接sql语句的时候,如果遇到Like的情况该怎么办。 一般采用带like的SQL语句进行简单的拼接字符串时,需要开率遇到sql注入的情况。这确实是个需要注意的问题。 这里结合一些查阅的资料做了初步的整理。 如这样一个s

  • 问题内容: 我当前使用c语言处理http事件,并且我需要使用mysql进行SQL操作,然后如何防止SQL注入,有没有c库供您使用,谢谢? 问题答案: 防止SQL注入(或外壳转义注入等)的方法没有将未加引号的文字字符串传递到将某些字符视为特殊字符的接口。您需要先将字符串数据转换为安全的带引号的形式,然后再将其包含在较大的“命令字符串”中,该字符串将由SQL数据库,shell,外部命令,采用URI字符

  • 问题内容: 我对编写sql很陌生,并且对联接有疑问。这是一个示例选择: 因此,假设我正在寻找所有嵌套在其中某个绿色小盒子的大盒子的名称。如果我理解正确,上述语法是获得与使用’join’关键字可获得的结果相同的另一种方法。 问题:上面的select语句对于正在执行的任务有效吗?如果没有,有什么更好的方法呢?语句是联接的语法糖还是它实际上在做其他事情? 如果您有任何与该主题相关的好材料的链接,我会很乐

  • 主要内容:SQL 注入的危害,SQL 注入示例,防止 SQL 注入SQL 注入是一种代码渗透技术,是最常用的网络黑客技术之一。SQL 注入非常危险,可能会导致数据库中的数据被暴露,甚至被损坏。 通过网页输入框(<input> 标签、<textarea> 标签等)将恶意 SQL 代码提交给服务器是最常见的 SQL 注入方式之一。 当网站要求输入诸如用户名(用户ID)之类的内容时,通常会发生 SQL 注入。黑客会输入一条 SQL 语句,而不是用户名/用户ID,当页面