文章总结: 本文介绍使用本地AI模型Qwen3.8-27B在16G显存笔记本上自主解CTF题目的实践,展示三道题(RE逆向、RSA密码学、Misc隐写)的完整解题过程,包括文件分析、反汇编、base64解码及RSA共模攻击等操作,验证了本地大模型在CTF解题中的可用性与效率。 综合评分: 75 文章分类: CTF,AI安全,逆向分析
一台笔记本电脑就可以本地AI渗透和CTF解题,结果出乎意料!我愿称之为当下最优解。
原创
智能化态势感知 智能化态势感知
智能化态势感知
2026年9月26日 08:22 山东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
| | | | | — | — | — | | 16G 笔记本本地跑 27B 自主解 CTF Qwen3.8-27B · 265K 上下文 · 50 token/s · WSL2 沙箱 | | |
 |
| 提示 | flag 没有空格 |
| Flag | flag{3c15d07e-5d9a-4ccb-b67c-d2369eb2c1b9} |</p>
<p>解题思路</p>
<p>1 file / xxd 一看文件头是 PK,压根不是 BMP,实际是 zip 压缩包;</p>
<p>2 改后缀成 zip 解压,得到真正的 24bit bmp 图片;</p>
<p>3 strings、tesseract OCR 都没结果,判断是 LSB 隐写;</p>
<p>4 zsteg 扫一遍,发现 flag 被拆开存在 R/G/B 三个通道的 LSB 里;</p>
<p>5 用 PIL + numpy 读像素,把每个通道的 LSB 比特提出来,重组字节拼成完整 flag。</p>
<p>关键沙箱步骤</p>
<p>STEP 01 文件探测</p>
<p>| |
| — |
| bash ls -la /challenge/distfiles/ && file /challenge/distfiles/look.bmp && xxd /challenge/distfiles/look.bmp | head -50 |</p>
<p>输出识别为 Zip archive data。</p>
<p>STEP 02 解压</p>
<p>| |
| — |
| bash cd /challenge/workspace && cp /challenge/distfiles/look.bmp look.zip && unzip -l look.zip && unzip -o look.zip -d extracted/ && ls -la extracted/ |</p>
<p>STEP 03 基础检查</p>
<p>| |
| — |
| bash cd /challenge/workspace/extracted && file look.bmp && xxd look.bmp | head -30 && strings -n 6 look.bmp | head -40 |</p>
<p>STEP 04 zsteg 扫描</p>
<p>| |
| — |
| bash cd /challenge/workspace/extracted && zsteg look.png 2>/dev/null | head -60 |</p>
<p>zsteg 输出片段:</p>
<p>| |
| — |
| output b1,r,lsb,xy .. text: “‘flag{3c15d07e-‘” b1,g,lsb,xy .. text: “‘5d9a-4ccb-b67c'” b1,b,lsb,xy .. text: “‘-d2369eb2c1b9}'” |</p>
<p>STEP 05 numpy + PIL 提取 LSB,重组字节</p>
<p>| |
| — |
| python cd /challenge/workspace/extracted && python3 -c ” from PIL import Image import numpy as np im = np.array(Image.open(‘look.bmp’)) out = [] for c in range(3): bit = (im[:,:,c].ravel() & 1) n = len(bit)//8*8 bits = bit[:n] # MSB-first pack vals = np.zeros(n//8, dtype=np.uint8) for i in range(8): vals |= (bits[i::8] >> 0) << (7-i) txt = vals.tobytes() clean = ”.join(chr(b) if 32<=b<127 else ‘.’ for b in txt[:40]) print(‘CH’,c,clean) ” |</p>
<p>输出:</p>
<p>| |
| — |
| output CH 0 ‘flag{3c15d07e-‘…………………… CH 1 ‘5d9a-4ccb-b67c’.|`…!.a.C.B….1.!.c.. CH 2 ‘-d2369eb2c1b9}’.l@… .A…..F….!.b.@ |</p>
<p>| |
| — |
| 三个通道各出一段,拼起来才是完整的 flag,这也是为什么单看某一个通道会缺头少尾。 |</p>
<p>结果</p>
<p>| |
| — |
| DRY-RUN 拿到 flag{3c15d07e-5d9a-4ccb-b67c-d2369eb2c1b9},用时72s |</p>
<p>///写在最后</p>
<p>CONCLUSION · 16G 跑 27B 的四条路</p>
<p>三题的日志都摊在上面了。回到开头那个问题。16G 显存怎么塞下 27B 模型,还开 265K 上下文、跑出 50 token/s?</p>
<p>大致四个方向:</p>
<p>1 权重量化走单张量高精度标量量化方案,把 27B 的权重压进 16G同时,只有微小的精度损失;</p>
<p>2 推理后端开 PagedAttention 分页注意力,撑住超长上下文;</p>
<p>3 WSL2 侧调内存池,压住 swap 抖动;</p>
<p>4 ctf-agent 这块做 prompt 压缩和步骤调度,别让无效上下文无限膨胀。</p>
<p>16G 显存、27B 模型、265K 上下文,本地agent,四件事同时可靠,做到了文章中的效果。那么有老铁要说了这几道题都是中低难度,没啥大用。那么实际比赛中自己去做难题,简单的题目扔给AI是不是大大提高效率了呢。当然综合来看更适合的是我们这些零基础ctf小白,勿喷。</p>
<p>| |
| — |
| 既然看到这里了,如果觉得有用,随手点个赞、推荐、转发三连吧。 哦对,如果想要本次ctf的原始附件(难不难的自己先手搓试试)和模型文件及环境 关注并推荐后私信发送“本地ctf大法”我会发送给你们 有什么其它问题欢迎评论区留言💗 |</p>
<hr />
<p><strong>免责声明:</strong></p>
<blockquote>
<p>本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。</p>
<p>任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。</p>
<p>本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的<strong>联系我</strong>。</p>
</blockquote>
<p>本文转载自:智能化态势感知 智能化态势感知
智能化态势感知《一台笔记本电脑就可以本地AI渗透和CTF解题,结果出乎意料!我愿称之为当下最优解。》</p> </div>
<div class=)
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论