人=族 发表于 2015-12-21 13:55:02

求绕过360websec 通用防注入方法

<%
On Error Resume Next
if request.querystring<>"" then call stophacker(request.querystring,"'|(and|or)\b.+?(>|<|=|in|like)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)")
if request.Form<>"" then call stophacker(request.Form,"\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)")
if request.Cookies<>"" then call stophacker(request.Cookies,"\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)")
ms()
function stophacker(values,re)
dim l_get, l_get2,n_get,regex,IP
for each n_get in values
for each l_get in values
   l_get2 = values(l_get)
   set regex = new regexp
   regex.ignorecase = true
   regex.global = true
   regex.pattern = re
   if regex.test(l_get2) then
                              IP=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
                              If IP = "" Then
                                  IP=Request.ServerVariables("REMOTE_ADDR")
                              end if
                              'slog("<br><br>操作IP: "&ip&"<br>操作时间: " & now() & "<br>操作页面:"&Request.ServerVariables("URL")&"<br>提交方式: "&Request.ServerVariables("Request_Method")&"<br>提交参数: "&l_get&"<br>提交数据: "&l_get2)
    Response.Write "360websec notice:Illegal operation!"
    Response.end
   end if
   set regex = nothing
next
next
end function

sub slog(logs)
      dim toppath,fs,Ts
      toppath = Server.Mappath("/log.htm")
                              Set fs = CreateObject("scripting.filesystemobject")
                              If Not Fs.FILEEXISTS(toppath) Then
                                    Set Ts = fs.createtextfile(toppath, True)
                                    Ts.close
                              end if
                                    Set Ts= Fs.OpenTextFile(toppath,8)
                                    Ts.writeline (logs)
                                    Ts.Close
                                    Set Ts=nothing
                                    Set fs=nothing
end sub
sub ms()
      dim path,fs
      path = Server.Mappath("update360.asp")
      Set fs = CreateObject("scripting.filesystemobject")
      If Fs.FILEEXISTS(path) Then
      Response.Write "请重命名升级文件update360.asp防止黑客利用"
      Response.End
      end if
      Set fs=nothing
end sub
%>




caizi 发表于 2015-12-21 16:05:49

我也想知道,坐等楼下大牛

LiFi 发表于 2015-12-22 16:25:19

我看到网上有帖子,在乌云里,自己没成功过

热心网友7 发表于 2026-5-20 11:10:00

Re: 求绕过360websec 通用防注入方法

这类防注入代码在实战中确实有不少绕过空间,比如利用HTTPS参数污染、换行符拆分关键词、宽字节注入或利用正则的未匹配细节。不过直接讨论绕过方法对实际安全没有太大帮助——建议把重点放在“如何加固”而不是“如何破解”上。 你的代码里几个明显的薄弱点: 1. `On Error Resume Next`会吞掉错误,导致后续逻辑异常时无法拦截。 2. 正则对大小写敏感匹配了`EXEC`、`SELECT`等,但攻击者可以混用Unicode、URL编码、注释符嵌套来绕过。 3. `update360.asp`的检查只是提醒,如果这个文件存在且可访问,本身就是后门。 4. 正则匹配`\b(and|or)\b.{1,6}?`这种范围太小,某些注入可以用`||`、`&&`或空注释绕过。 5. Cookie过滤做得很弱,很多绕过方式根本不走QueryString和Form。 建议你: - 放弃这种黑名单正则,改用参数化查询(Prepared Statement)或存储过程。 - 如果不方便改数据库操作,至少升级到白名单模式——只允许特定字符集(如数字、字母、下划线)进入SQL语句。 - 把`On Error Resume Next`去掉,或者在出错时直接终止。 - 删掉`update360.asp`文件,或者禁止外部访问。 防注入不是靠写一条正则就能一劳永逸的,核心还是杜绝拼接SQL。如果你手头有业务
页: [1]
查看完整版本: 求绕过360websec 通用防注入方法