一个HTTP请求,把网站打裂开了!

新手友好型内网穿透工具路由侠实战:从零部署本地网站到公网访问 内网穿透技术是解决本地服务无法被公网直接访问的关键方案,其核心原理是在本地网络与公网之间建立一条安全的隧道,将公网请求转发至内网服务器。这项技术的价值在于,它绕过了复杂的网络配置和公网IP限制,为开发测试、项目演示和临时服务搭建提供了极大便利。在Web开发、API调试、远程协作等应用场景中,内网穿透能帮助开发者快速将运行在localhost上的应用暴露给外部用户。本文以部署静态网站为例,详细介绍了如何使用路由侠这一对新手友好的工具实现内网穿透,并针对常见的403错误和连接稳定性问题提供了具体的排查思路与解决 阅读详情

大家好,我是周杰伦,今天给大家看一段神奇的代码。

利用这几行神奇的代码,居然能把网站打崩溃,这是怎么一回事呢?

就是下面这个函数,根据传进来的开始和结束位置,读取文件数据:

char* Read(int fd, int start, int end) {
    unsigned int length = end - start + 1;
    if (length > 1024)
        return NULL;

    return ReadFile(fd, start, end);
}

函数中最大只支持一次读取1024个字节,所以增加了一个判断逻辑。

现在请大家思考一下,这个函数有没有什么问题?

—思---

—考---

—5---

—秒---

—钟---

来思考一下,假设我像这样来调用这个函数:

Read(0, 0, 4294967295);

会发生什么事呢?

你可能已经注意到了,这里传了一个很特殊的参数过去,这个数乍一看很大,远远超过了1024,按理说会通不过函数内部的检查对吧?

但事情不是这么简单,这个特殊的数字——4294967295,是32位无符号整数所能表示的最大范围。

但是请注意Read这个函数的参数,start和end都是int型变量,把4294967295传递给end的时候,会被当作有符号的整数解析,也就是 -1 !

现在来看Read函数中计算长度的这行代码:

unsigned int length = end - start + 1;

计算结果就是-1 - 0 + 1 = 0!

length的结果会是0!

很自然逃过了下面对长度的检查:

if (length > 1024)
    return NULL;

上面这段代码不只是一个假想的模型,实际上,它曾经真实存在过!

它的漏洞编号是:CVE-2015-1635。

这是一个微软的互联网服务器IIS中的一个漏洞,更要命的是,这个漏洞位于IIS处理HTTP请求的HTTP.sys驱动程序中。

你知道的,驱动程序是运行在操作系统内核之中,一旦内核驱动执行出现异常,那后果,轻则蓝屏崩溃,重则直接被攻击者远程执行代码,控制服务器!

在HTTP 1.1版本的协议中,可以通过请求头中的Range字段,请求或上传指定资源的部分内容,比如像这样:

GET /bg-upper.png HTTP/1.1
User-Agent: curl/7.35.0
Host: 127.0.0.1:8180
Accept: */*
Range: bytes=0-10

其中的Range字段格式如下:

Range: bytes=start-end

微软的IIS为了提高性能,将HTTP协议的解析放在了内核驱动HTTP.sys中实现。

而其中对range字段的处理,就存在我们文章开头的那个逻辑错误,不同的是,我们上面的那个示例是一个32位整数的版本,而IIS这个真实的漏洞是64位整数产生的问题,但原理是一样的。

通过向存在漏洞的IIS服务器发送对应的HTTP请求,即可将目标服务器打蓝屏,实现DOS——拒绝服务攻击。

这种攻击方式就是——整数溢出攻击。

接下来,咱们在搭建一个环境来验证一下。

在虚拟机中搭建一个IIS7的Web服务器:
在这里插入图片描述
64位无符号整数能表示的最大数是:18446744073709551615,通过向服务器发送包含range参数的请求,有很大可能会导致服务器蓝屏。

使用神器metasploit来利用这个漏洞发起攻击:
在这里插入图片描述
现在来看,服务器已经挂了:
在这里插入图片描述
为什么是很大可能,而不是一定蓝屏呢,如何实现稳定把服务器打蓝屏呢?这就需要进一步了解这个漏洞更详细的情况。

实际上这个漏洞原理比文章开头的那个逻辑要更复杂一些,这里只是做了一个简单入门介绍,关于这个漏洞的更详细情况,大家可以看一下360大神MJ0011当年写的一篇技术分析(PS:有点硬核,想要看懂得反复多看几次):

《MS15-034/CVE-2015-1635 HTTP远程代码执行漏洞分析》

https://blogs.360.cn/post/cve_2015_6135_http_rce_analysis.html

我们平时在编程的时候,一定要注意变量的数据类型,特别是涉及到数据类型转换的地方要格外留神。比如符号数与无符号数的互转,32位整数和64位整数的转换等等。

在处理外界传入的参数处理时,要慎之又慎,一个小小的变量类型可能就会给服务器计算机造成毁灭性打击。

从线上盗链事故到实战:详解HTTP Referer防盗链原理与Nginx/CDN配置 在Web开发与运维中,服务器资源保护是一个基础且关键的课题。其核心原理在于识别和验证请求的来源,防止未经授权的第三方消耗带宽与计算资源。HTTP协议中的Referer头在这一过程中扮演了重要角色,它携带了请求发起的页面地址,为服务器提供了判断依据。这项技术的核心价值在于保障业务稳定性与控制成本,尤其对于内容社区、媒体站点及文件下载服务至关重要。典型的应用场景包括防止图片、视频等静态资源被外部网站直接引用,从而避免因盗链导致的突发流量与额外费用。本文基于真实的线上盗链事故与多年维护经验,深入剖析了防盗链的工作 阅读详情

相关推荐

从本地到公网:如何正确“服务”HTML文件

网页在浏览器中正常显示,靠的不是双击本地文件,而是通过HTTP协议从服务器获取资源。很多初学者将HTML文件发给他人后出现样式丢失、图片裂开,根源在于file://与http://的差异,以及Content-Type是否正确返回text/html。理解这一层原理,是Web开发入门的第一道坎。搭建本地开发服务器是快速验证页面的常用手段,Python的http.server、Node的serve或VS Code Live Server都能胜任。当页面需要对外访问时,静态托管平台如GitHub Pages、Net

weixin_30430677的博客 217

网络系统安全——MS15_034漏洞利用与安全加固

下面我们来针对该漏洞进行临时修复(可能降低IIS性能),回到靶机服务器上,打开Internet信息服 务(IIS)管理器,找到Default Web Site主页内容,选择输出缓存,点击打开功能。使用BurpSuite发送测试代码,方便观察回包的数据,打开桌面上的burpsuite,并开启浏览器代理,再次访问目标的默认站点页面,右键点击空白处选择Send to Repeater。注:返回内容不再是416错误,而是正常页面。注:可以看见,上图里有两个模块,分别是dos拒绝服务模块,HTTP.sys扫描模块。

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 6790

告别手动复制粘贴!用Python脚本+pywinauto实现PC微信消息自动发送(附完整源码)

本文详细介绍了如何利用Python和pywinauto实现PC微信消息的自动化发送,告别繁琐的手动操作。从环境搭建、UI控件定位到构建健壮的发送流程,再到高级功能扩展和项目打包部署,全面解析了自动化办公的实现方案,显著提升工作效率。

weixin_30315723的博客 585

【图解HTTP】——Web的攻击技术

互联网上的攻击大都将Web站点作为目标 1 HTTP协议本身不存在安全性问题,应用HTTP协议的服务器和客户端,以及运行在服务器上的Web应用等资源才是攻击目标 HTTP不具备必要的安全功能,仅是一个通用的单纯协议机制,开发者需要自行设计并开发认证及会话管理功能来满足Web应用的安全 容易被攻击者滥用的安全漏洞的Bug: 在客户端即可篡改请求 Web应用可能会接收到与预期数据不相同的内容 在HTTP请求报文内加载攻击代码,就可以发起对Web应用的攻击 通过URL查询字段或表单、HTTP首部、Cookie等

weixin_46146755的博客 4214

DP_AUX辅助通道介绍

DisplayPort(简称DP)是一个由PC及芯片制造商联盟开发,视频电子标准协会(VESA)标准化的数字式视频接口标准。其中辅助通道(AUX)是一条独立双向半双工的传输通道,它也是一对差分信号线。其数据传输速率1Mbps,用来传输配置参数与指令。

cjie221的博客 5353

中文实体关系抽取数据集大盘点:从百度Duie2.0到医疗CBLUE,哪个更适合你的NLP项目?

本文全面分析了中文实体关系抽取领域的主流数据集,包括百度DuIE 2.0、医疗CBLUE等,帮助开发者根据项目需求选择最适合的数据集。文章详细对比了各数据集的特点、适用场景及优化策略,为自然语言处理项目提供实用指南。

weixin_29284657的博客 121

如何防止模拟的http的恶意请求?

http://www.dewen.io/q/5511 我有一串URL www.abc.com?para=xxx  在页面中点击按钮后用ajax执行此URL后,后台会执行一些操作,页面通过ajax的响应结果继续完成接下来的操作。这里是没登录的情况下,没有用户标志这种session的。  但是如果遇到懂程序的人,如果发现了这个接口的调用方法,就可以使用一些Http模拟提交的工具来请求这个

mituan1234567的专栏 2万+

光斑大小控制【ZEMAX操作数】

在使用Zemax优化光学系统时,对成像的聚焦光斑大小进行限制,即弥散斑的大小; 一、RSCE(质心RMS光斑半径):二、RSCH(光线RMS光斑半径):

yh的博客 7867

网络请求封装类lmxHttpUrlConnection

由于android在api23及以上的版本中废弃了httpclient,所以用了之前lmxHttpClient同样的方法,将请求完成的业务逻辑抽象后封装了httpUrlConnection,方式是一样的。   虽然也可以在高于23的版本下继续使用httpclient,方式见http://blog.youkuaiyun.com/u014727233/article/details/51985429,不过早晚还

轰炸大鱿鱼的博客 1095

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 751

手把手教你学PCIE(10.5)--PCIE故障排除方法的分步排查法介绍

通过以上分步排查法,你可以系统地诊断和解决 PCIe 设备的故障。每个步骤都有助于逐步缩小问题范围,最终找到并解决问题。

MHD0815的博客 1873

别再让图片裂开了!深入理解HTTP Referer与网站防盗链机制

本文深入解析HTTP Referer机制与网站防盗链技术,帮助开发者解决图片加载报错403问题。通过分析Referer工作原理、防盗链实现方式及主流绕过方案,提供包括前端meta设置、服务端代理等实用解决方案,并探讨现代Web安全对防盗链的影响及新型应对策略。

weixin_30338497的博客 428

复旦微FMSH_Procise安装流程

双击FMSH_Procise_2021.1_full_win64_202103151947.exe 选择好安装目录后点击“Next” 一路next 点install 找技术支持代为申请 License,将电脑MAC地址发过去,将获得的 license 拷贝到 procise 安装目录“data”文件夹,即可使用 procise。点license manager和copy license 将licence,.lic文件放到这个目录 要是报下面错误要...

wangjie36的博客 1万+

前端https访问http问题

开发的时候遇到过,就是https无法加载http资源的问题 其实原因是csp里面的Content-Security-Policy协议,市面上所有的浏览器都开启了 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy/block-all-mixed-content(协议的内容可以看这个) 之前在前端的开发中,非常容易出现的问题就是,假如你要播放一个视频,你调用接口,接口给你返回了一个http://XX

5252

用 SAP HANA SDA 访问 PostgreSQL:从可行性到落地实践的完整指引

摘要:SAP HANA可通过SDA/SDI技术访问PostgreSQL数据库,支持数据虚拟化和实时复制。主要实现路径包括:1)使用Camel JDBC适配器创建虚拟表进行联邦查询;2)利用PostgreSQL Log Reader适配器实现变更数据捕获(CDC)。实施时需配置Data Provisioning Agent,注意权限和网络要求。官方文档指出,通过SDI+DP Agent的方式比直接SDA连接更稳定可靠。虚拟化查询时,HANA会自动将SQL下推到PostgreSQL执行,优化性能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 256

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

拿到百度前端大佬整理的学习笔记,帮我搞定90%的前端面试!

前言 激动的心颤抖的手,看着百度大佬整理的学习,嘴巴都要笑裂开了,别问哪来的,问就是我有个朋友哈哈哈哈哈。本着独乐乐不如众乐乐的心,小编把这份学习笔记分享出来,一起感受百度前端大佬的厉害! 每个知识点都有左侧导航书签页,看的时候十分方便,由于内容较多,这里就截取一部分图吧 HTML专题 浏览器页面有哪三层构成,分别是什么,作用是什么? HTML5的优点与缺点? Doctype作用? 严格模式与混杂模式如何区分?它们有何意义? HTML5有哪些新特性、移除了哪些元素? 你做的网页在哪些浏览器测试过,这些

weixin_52546522的博客 2020

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

七牛云CDN图片加载异常:深入解析net::ERR_HTTP2_PROTOCOL_ERROR及排查方案

本文深入解析了在使用七牛云CDN时,图片加载出现net::ERR_HTTP2_PROTOCOL_ERROR错误的常见原因与系统排查方案。文章从连接中断、TLS配置、服务器兼容性等五大元凶入手,提供了从基础验证到使用专业检测工具的四步定位法,并给出了优化配置与客户端容错等根治与预防建议,帮助开发者快速解决此类协议层故障,保障资源稳定加载。

f6g7h8i9j的博客 197

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

七、浏览器网络通信

HTTP与HTTPS协议解析及网络分层模型

nsdhakshda的博客 201

nginx 之安全配置

前言:看官网官网!!!!! 一、控制并发连接数 1.在默认发布目录新建一个目录并保存一张图片 传送文件到server1 打开浏览器就能看到图片 2 测试 查看日至情况 cat /usr/local/nginx/logs/access.log http状态码 在真机上执行 #ab -c10 -n10 http://172.25.254.1/download/vim.png 在server1 查看日至 3 修改配置文件 控制并发数为1...

weixin_45267059的博客 4422

request-promise 获取返回头信息_爬取某gou网的招聘信息

猜测:网站建设,在 推广,反爬,和用户体验这三项功能上会找到一个平衡点.这是在学院学习期间的第二个项目,也是最后一个,目标是爬取网上的招聘信息,并对信息做分类统计,得出一个招聘方的需求向量,一个福利向量,然后通过某些方法得出应聘方的技能向量,需求向量。最终计算招聘方与应聘方的契合度,排序出最适合应聘方去投递简历的公司。要做数据分析,首先,需要搞到数据……于是小玉以...

weixin_39721924的博客 738

css 优化 图裂,CSS图片优化的一些相关建议

CSS图片优化就是尽量压缩图片的大小,加快页面加载速度,这对于大型网站是很有用的。不要小看它,它可以大大提高网页加载速度。通常大家用到的方法就是css sprites。CSS Sprites(图片整合技术) 的目的就是通过整合图片,减少对服务器的请求数量,从而加快页面加载速度。想必很多人已经在用这个技术,我给大家简单介绍一下,总结一下我使用css sprite时的一些技巧。CSS Sprites实...

weixin_33013787的博客 387

今天我们来聊聊防盗链机制

前言 什么是盗链? 为什么要做防盗链? 如何实现防盗链呢? 如何破解防盗链? 前言 今天我的一位公众号读者告诉我,昨天发的文章【今天来聊一聊什么是软件设计中的上游和下游?】裂开了,我打开一看果不其然,如下图: 可恶的防盗链机制,这不是什么彩蛋,这真的是踩雷了,因为我写文章会同时发布在csdn【名称:lakernote,欢迎大家同时关注】和公众号,所以自己搞了个图床,但是现在很多图床或者网站都会有防盗链机制,才导致了这个悲剧,那么刚好借此机会来研究下防盗链相关知识吧????????????(因祸得福系列

laker的博客 5282
上一篇: 想开发一个安全软件,怎么搞?
下一篇: 小白怎么混安全圈子?
AI小模型
博客等级 码龄6年 6863粉丝 487原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值