查看: 5430|回复: 2

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

[复制链接]
发表于 2015-12-21 13:55:02 | 显示全部楼层 |阅读模式
<%
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
%>




360截图20151221135417318.jpg
回复

使用道具 举报

发表于 2015-12-21 16:05:49 | 显示全部楼层
我也想知道,坐等楼下大牛
回复 支持 反对

使用道具 举报

发表于 2015-12-22 16:25:19 | 显示全部楼层
我看到网上有帖子,在乌云里,自己没成功过
回复 支持 反对

使用道具 举报

发表于 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。如果你手头有业务
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-5-30 21:37 , Processed in 0.023139 second(s), 19 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部