从今天凌晨开始,我们将在电子商务商店中关注搜索查询。我理解它的SQL注入。我们还使用参数化查询。所以它没有造成任何伤害。但由于查询的长度,全文搜索花了一些时间来处理并最终超时并且网站暂停了一段时间。
我立即限制了搜索到75的最大租船人,并添加了逻辑来检测sql注入并防止它作为额外的安全性到达sql server。
我们的环境: ASP.Net电子商务网站 SQL Server 2012 Express DB具有全文搜索功能。 Windows 2012 Std Server。
只是想知道搜索者想要了解/学习什么?或者他们只是想挂网站?在上面提到的修复之后忽略它是安全的吗?
搜索条件如下。 "输入型号或盒式代码"是我们的默认搜索文本框文本。
输入型号或墨盒代码)AND 2895 =(选择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)))来自双)和(9170 = 9170
输入型号或盒式代码')AND 3733 = CONVERT(INT,(SELECT CHAR(113)+ CHAR(113)+ CHAR(104)+ CHAR(106)+ CHAR(113)+(SELECT(情况(3733 = 3733)然后CHAR(49)ELSE CHAR(48)END))+ CHAR(113)+ CHAR(106)+ CHAR(113)+ CHAR(107)+ CHAR(113))和(& #39; KzHP' =' KzHP
输入型号或墨盒代码%' 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)和'%' ='
输入型号或墨盒代码%&#39; 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)))和&#39;%&#39; =&#39; < / p>
输入型号或墨盒代码&#39;)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(&#39; iWJF&#39; =&#39; iWJF
输入型号或盒式代码AND 3733 = CONVERT(INT,(SELECT CHAR(113)+ CHAR(113)+ CHAR(104)+ CHAR(106)+ CHAR(113)+(SELECT(CASE WHEN(3733) = 3733)那么CHAR(49)ELSE CHAR(48)END))+ CHAR(113)+ CHAR(106)+ CHAR(113)+ CHAR(107)+ CHAR(113))) - ZgIZ
输入型号或墨盒代码)AND 6442 = CAST((CHR(113)|| CHR(112)|| CHR(97)|| CHR(122)|| CHR(113))||(SELECT(情况下(6442 = 6442)那么1节0结束))::文字||(CHR(113)|| CHR(119)|| CHR(99)|| CHR(121)|| CHR(113))AS NUMERIC)AND(8167 = 8167
输入型号或盒式代码AND 3733 = CONVERT(INT,(SELECT CHAR(113)+ CHAR(113)+ CHAR(104)+ CHAR(106)+ CHAR(113)+(SELECT(CASE WHEN(3733) = 3733)那么CHAR(49)ELSE CHAR(48)END))+ CHAR(113)+ CHAR(106)+ CHAR(113)+ CHAR(107)+ CHAR(113)))
输入型号或墨盒代码AND 6442 = CAST((CHR(113)|| CHR(112)|| CHR(97)|| CHR(122)|| CHR(113))||(SELECT(CASE) WHEN(6442 = 6442)那么1 ELSE 0 END)):: text ||(CHR(113)|| CHR(119)|| CHR(99)|| CHR(121)|| CHR(113))AS NUMERIC ) - CuDa
答案 0 :(得分:4)
作为SQL注入专家,似乎这些只是通用查询来了解是否存在SQL注入,以及它是哪种数据库类型。 您可以看到,在某些情况下,他使用了CHR,这是Oracle的number-to-char版本,在其他情况下,他使用CHAR作为其他DB的函数名称(SQL Server),在另一种情况下,他使用了CHAR_SCHEMA.CHARACTER_SETS表是MySQL中的一个表。 他只需发送几个常规查询来查找注入和数据库类型。 尽管如此,如果您的网站挂起,除了长度验证之外,还应该对特殊字符(括号?)进行更好的输入验证