LOADING

加载过慢请开启缓存 浏览器默认开启

youbing的博客

记录学习与生活

技术博客,分享编程学习笔记

记一次教育网站信息泄漏问题的挖掘思路

2026/8/12

声明

本文仅用于记录个人安全学习与漏洞挖掘过程,旨在分享漏洞发现思路、安全分析方法以及防护建
议。本文重点在于分享漏洞产生原因和安全防护思路,不提供针对真实系统的利用方法、自动化测试方案或数据获取方式。任何组织或个人在进行安全测试时,应确保已获得明确授权,并遵守相关法律法规及平台规则。

背景

在日常安全测试学习过程中,对某教育网站公开资源进行观察时,发现部分文件存在访问控制问题。

初始发现

在访问某公开页面时,注意到页面中存在附件资源,资源已经过了规定的公示时间,但是仍然能够下载,而且附件内容包含个人敏感信息。

分析过程

过程:

页面->附件链接->文件服务器->直接返回文件

分析:

获得泄漏信息全程仅需网站正常下载附件的操作不需要专业知识和工具。

漏洞影响

该漏洞利用难度低普通人群也能利用获取到个人敏感信息;

部分泄漏出来的敏感信息常被高校用于统一身份认证登录的账号或默认密码,该漏洞虽然不直接影响其它漏洞的出现,但增加了统一身份认证这种屏障被突破的风险;

漏洞本身泄漏出来的个人信息,可能导致隐私暴露和被社工的风险。

漏洞原因分析

对于存在公开周期的文件,未在结束后及时删除或限制;

在公开界面中放置带敏感信息的文件。

后续发现

经过复盘发现这种资源公开模式是高校普遍存在的,那么可能其它地方也存在同样的问题,进一步测试发现该问题有一定的普遍性。

修复建议

开发:
文件权限控制;

敏感文件脱敏;

公示结束自动失效。

管理:
定期检查历史附件;
建立文件清理机制。

总结

这次经历让我认识到实际环境中安全问题不一定来自复杂漏洞,权限管理和数据生命周期同样可能产生安全风险。一个漏洞的出现可能在另一个地方存在相同的漏洞,漏洞在提交报告后并不一定代表着结束,复盘分析可能会带来额外的收获。

阅读全文

验证码识别绕过与防护

2026/6/13

前言

本篇文章主要介绍传统图形验证码绕过方式和防护手段,以及防护方面的思考。文章仅供学习,作者不鼓励、不支持任何未经授权的系统测试、数据获取或安全绕过行为。

示例

当发现网站验证码比较简单没有什么干扰比如

就可以尝试找到网站的验证码响应
然后保存下来利用EasyOCR识别验证码,这里放一个示例脚本

from PIL import Image
import numpy as np
import easyocr

reader = easyocr.Reader(['en'], gpu=False)

def recognize(path):
    img = Image.open(path).convert('RGB')
    arr = np.array(img)
    res = reader.readtext(arr)
    return ''.join([item[1] for item in res])

if __name__ == '__main__':
    img_path = input("请输入验证码图片路径(支持拖拽):").strip().strip('"')
    try:
        code = recognize(img_path)
        print(f"识别结果:{code}")
    except Exception as e:
        print(f"出错:{e}")

成功识别该验证码

作用

一些网站为了防止绕口令爆破会使用验证码进行防护,示例中虽然只验证了单次识别验证码,但是配合其它代码可能降低自动化请求的成本。

验证码失效原因

验证码样式过于简单,无干扰元素或干扰元素较弱(背景单一,干扰线无或过少,固定字体,格式统一)

如何进行防护

可能影响用户体验:

1、添加更多干扰元素减少识别成功率
2、改用滑块或行为验证码

对用户体验影响较小:

1、IP风控
2、风险评分系统

思考与总结

传统字符验证码作为独立安全措施具有较大风险,一个安全的认证需要更多手段结合构建一个完整的认证体系。滑块验证码和行为验证码在一定程度上增加了验证码的安全性,但是牺牲了用户体验(增加用户验证时长,增加用户操作步骤)。IP风控和风险评分系统在用户使用过程中影响较小,但是可能会对用户造成误伤,还有在使用过程中会增加维护成本。

阅读全文

ctfshow web应用安全与防护题解

2026/3/16

Base64编码隐藏

打开题目f12查看源码发现密码被base64加密

1773670223912

解码得到密码

1773670666647

登录得到flag

1773670740030

HTTP头注入

f12查看源码发现密码被base64加密

1773670223912

解码得到密码

1773670666647

登录提示只能ctf-show-brower登录

1773671083716

这里抓包修改(靶场默认开启https,删除s切换回http再抓包)

1773671245832

发送请求包得到flag

1773671327314

Base64多层嵌套解码

这里步骤跟“HTTP头注入”一样,只是中间的解码的步骤复杂了一些

第1步逆向:Base64解码 text atob(“SXpVRlF4TTFVelJtdFNSazB3VTJ4U1UwNXFSWGRVVlZrOWNWYzU=”)

第2步逆向:这一步是 btoa(‘aB3’ + encoded + ‘qW9’).substr(2) 对第1步结果Base64解码 得到完整字符串,前面补回2个字符 去掉开头的”aB3”和结尾的”qW9”

第3步逆向:这一步是 btoa(encoded.split(‘’).reverse().join(‘’)) 对第2步结果Base64解码 将字符串反转

第4步逆向:这一步是 btoa(encoded + ‘xH7jK’).slice(3) 对第3步结果Base64解码 开头补回3个字符 去掉结尾的”xH7jK”

第5步逆向:最后Base64解码,得到原始密码

阅读全文
1
avatar
youbing

你好!我是 youbing
这是我的技术博客
分享编程学习笔记和生活记录