- 博客(26)
- 收藏
- 关注
原创 snprintf格式化字符串漏洞
摘要:Windows 64位PE文件中基于栈的缓冲区溢出漏洞分析 本文分析了Windows 64位PE文件中snprintf函数存在的格式化字符串漏洞。实验环境为Win11+VS2022,关闭了ASLR和栈保护。研究发现当用户输入包含格式化占位符时,即使未指定参数列表,snprintf仍会从栈中读取数据替代占位符。通过动态调试展示了漏洞利用过程,包括信息泄露技术,使用%llx占位符可读取栈中敏感数据。最后提出了解决方案:避免直接传递用户输入给格式化函数、使用可信格式化字符串、启用系统防护机制等。该漏洞属于C
2026-03-31 01:11:18
694
原创 gets()栈溢出实验(CWE-242)
摘要:本文通过CWE-242漏洞实例分析,以gets()函数为例演示了缓冲区溢出攻击。文章详细介绍了漏洞程序编写、编译参数设置(关闭安全机制)、栈布局分析及ROP利用过程,成功劫持控制流执行特权操作。同时探讨了shellcode注入方法,并提供了防护建议。实验在Kali Linux环境下完成,展示了从漏洞复现到利用的全过程,包括gdb调试技巧和偏移量计算等实用技术。(149字)
2026-03-13 19:54:38
783
原创 代码洞(Code Cave)
摘要:本文详细介绍了在EXE文件中插入自定义代码的技术方法。首先通过CFF Explorer工具定位程序入口点,添加可执行节区(.mine)并设置权限。针对无GUI程序的特点,分析了导入表结构并计算出printf函数的内存地址。重点阐述了两种shellcode注入方式:1)直接调用已知函数地址;2)通过遍历PEB/LDR结构动态获取函数地址。文中提供了完整的机器码示例和调试截图,并详细解析了PEB结构及内存遍历过程。最后在不同系统环境下测试了注入效果,展示了从控制台程序调用MessageBox的实现过程。
2026-03-12 01:09:55
874
原创 PE文件(可执行文件)结构中地址映射的原理和计算方法
本文详细解析了PE文件的关键字段与节区属性,并演示了虚拟地址到文件偏移的转换方法。首先介绍了ImageBase、AddressOfEntryPoint等核心字段含义,通过CFF和010Editor工具验证了这些字段的存储格式。重点分析了节区属性,包括VirtualAddress、SizeOfRawData等参数。随后推导出VA到文件偏移的四步转换公式:计算RVA、定位节区、计算节内偏移和文件偏移。最后通过两个实例验证了该公式的正确性,展示了内存指令与文件数据的对应关系。整个过程清晰地呈现了PE文件在内存与磁
2026-03-10 19:55:30
662
原创 详解Base85编码原理
Base85(Ascii85)是一种高效的二进制文本编码方案,用5个ASCII字符表示4字节数据,编码效率(125%)优于Base64(133%)。其原理是将32位二进制数据视为大整数并转换为85进制数,通过编码表映射为可打印字符。当输入不足4字节时采用零填充并截断相应字符数来标识填充长度,同时支持用"z"表示全零数据块优化。此外,存在两种变体:Adobe Ascii85支持零压缩和填充处理,主要用于PDF/PostScript;Z85则采用更安全的字符集且要求定长输入,适用于网络传输。
2026-03-09 12:53:30
921
原创 centos 7等保整改学习
本文摘要: 本文详细介绍了Linux系统安全整改操作规范,重点涵盖身份鉴别相关配置。主要内容包括:1) 检查并修复空口令账户;2) 配置密码复杂度策略(最小长度8位,包含大小写字母、数字和特殊字符);3) 设置密码有效期策略(最长90天,过期前7天提醒);4) 实施登录失败处理机制(5次失败锁定30分钟)。所有操作均强调先备份后修改,并提供具体命令示例。文章特别指出CentOS 7已停止维护,建议迁移至持续维护的发行版。实际案例显示,完整实施这些措施可使系统漏洞减少76%,入侵事件下降92%。
2026-05-23 18:00:47
840
原创 AES加解密流程解析
本文详细介绍了AES加密算法的Rijndael结构实现原理。首先阐明AES采用固定128比特分组长度,密钥可选128/192/256比特。文章重点解析了四个核心运算:字节代换(通过S盒查表)、行移位(循环左移)、列混合(矩阵乘法)和轮密钥加(异或操作),并给出了加解密流程图。特别讨论了密钥扩展过程和优化解密方案,通过两个引理证明可以复用加密结构实现高效解密。最后指出该优化方案对软硬件实现的重要意义,并提及AES指令集的相关支持。
2026-05-16 22:16:18
571
原创 windows上协调多版本python以及虚拟环境
本文介绍了在Windows系统中实现Python 3.9和3.14双版本共存的方法。通过调整Path环境变量顺序,默认优先使用Python 3.9以兼容旧脚本,同时保留3.14版本供新需求使用。文章详细说明了如何使用py命令切换版本、在PyCharm中配置虚拟环境,以及通过PowerShell命令查看当前Python环境路径和安装包的方法。这种配置方式既能保持旧环境的兼容性,又能逐步过渡到新版本,为开发者提供了灵活的多版本Python管理方案。
2026-05-09 23:36:25
610
原创 汇编使用AES指令集实现AES解密
本文演示了AES-128-ECB模式的解密过程:首先使用在线工具计算密文,然后通过Python脚本实现密钥扩展,生成11个轮密钥。最后将这些密钥硬编码到汇编代码中,实现了完整的AES解密流程。解密过程包括初始轮密钥加、9轮主循环(使用aesdec指令)和最后一轮特殊处理(使用aesdeclast指令)。文章提供了完整的Python密钥扩展脚本和汇编代码实现,展示了从理论到实践的完整AES解密过程。
2026-05-04 22:29:54
642
原创 win11下nasm编写汇编及链接方案
本文介绍了使用NASM汇编器和不同链接工具生成可执行文件的过程。首先安装NASM并编写简单的"Hello"程序,通过NASM生成.obj文件。然后比较了两种链接方式:使用gcc链接生成约64KB的可执行文件,分析其体积过大的原因包括静态链接库、调试信息等;而使用GoLink工具动态链接kernel32.dll和msvcrt.dll后,仅生成1.5KB的极简可执行文件。文章通过对比不同链接方式的输出文件大小和结构,展示了优化程序体积的方法,包括去除符号表、动态链接等技术。
2026-05-02 23:33:34
727
原创 使用 OpenSSL 与 SignTool 实现 PE 文件完美数字签名
本文介绍了使用OpenSSL生成自签名证书并进行代码签名的过程。首先通过OpenSSL生成RSA密钥对和自签名证书,分析证书结构后转换为PFX格式。随后使用SignTool对可执行文件进行签名,但验证时发现证书不受信任。将证书导入受信任根证书后,仍因缺少"基本约束扩展"而失败。第二部分尝试创建CA根证书并签发代码签名证书,包括导出、导入根证书和使用根证书重新签名PE文件,但最终仍未能成功通过验证。整个过程展示了数字证书签名技术的实现细节及常见问题,为理解代码签名机制提供了实践参考。
2026-04-27 23:42:44
566
原创 反射型,存储型,DOM型xss
本文介绍了XSS漏洞的基本概念和三种常见类型(反射型、存储型、DOM型),重点分析了反射型XSS(GET和POST方式)的利用方法。文章展示了如何通过闭合标签构造恶意脚本,突破前端限制实现弹窗测试,并详细演示了三种将cookie发送到攻击者服务器的方法(重定向、fetch和Image对象)。对于POST型XSS,作者通过构建恶意表单页面,利用原型链绕过浏览器安全限制,最终成功获取用户cookie。这些实例揭示了XSS漏洞的危害性以及防御输入过滤和输出转义的重要性。
2026-04-15 23:21:44
716
原创 HTTPS中的JA3,JA4,JA3S介绍及计算
JA3和JA4是用于识别TLS客户端的技术指纹。JA3通过提取ClientHello中的TLS版本、密码套件、扩展等5个字段生成MD5哈希作为指纹,用于识别恶意软件和自动化工具。JA4是更先进的版本,采用三部分结构:第一部分是人类可读的协议信息,第二部分对密码套件排序后生成SHA256哈希,第三部分处理扩展和签名算法。相比JA3,JA4具有更好的可读性、抗干扰能力,支持更多协议,并能防止攻击者通过改变顺序绕过检测。此外,JA3S用于识别服务器身份,通过分析ServerHello响应。这些技术在网络安全、反爬
2026-04-13 21:36:37
1040
原创 https协议(从迪菲赫尔曼私钥到握手加解密)
HTTPS安全协议详解:从TLS握手到加密通信 摘要: 本文深入解析HTTPS安全协议的核心机制,重点对比HTTP与HTTPS的本质区别,详细阐述TLS协议的演进过程及内部结构。文章首先通过对比表格展示HTTP与HTTPS在安全性、协议栈、端口等方面的关键差异,指出HTTPS通过SSL/TLS层解决了HTTP存在的三大安全隐患:窃听、篡改和伪装问题。随后详细分析TLS协议的发展历程,从SSL到TLS 1.3的版本演进,特别强调TLS 1.3在速度和安全性上的显著改进。文章还深入剖析TLS握手流程,包括经典T
2026-04-12 22:10:29
2035
原创 eval()函数代码注入(python)
本文介绍了Python中globals()和locals()函数的功能与区别,它们分别返回全局和局部作用域的变量字典。通过代码示例展示了如何获取和查看这些命名空间内容。文章重点分析了eval()函数的安全风险,演示了恶意代码注入的危害,并推荐使用ast.literal_eval()作为安全替代方案。最后提出了三种安全解决方案:使用ast.literal_eval()、建立输入过滤机制或预处理用户输入。这些方法可有效防范代码注入攻击,保障程序安全。
2026-04-09 21:50:55
548
原创 格式化字符串漏洞(wdb_2018_2nd_easyfmt)
本文分析了32位ELF程序wdb_2018_2nd_easyfmt的格式化字符串漏洞利用方法。首先搭建调试环境并安装gdb和pwndbg插件。通过分析程序属性发现其为动态链接且未剥离符号的32位程序,启用了NX保护但无栈保护。调试发现程序直接将用户输入作为printf的格式化字符串参数,存在漏洞。利用%x验证可通过栈内存泄露数据,并构造payload将GOT表中printf地址修改为system函数地址,实现任意内存写入。实验通过python生成包含目标地址和格式化字符串的payload,成功验证了漏洞利用
2026-04-02 21:17:17
683
原创 WinRAR的路径穿越漏洞(CVE-2025-8088)
WinRAR漏洞CVE-2025-8088分析报告摘要 该漏洞影响WinRAR 7.12及以下版本,利用NTFS流特性实现目录穿越攻击。POC通过Python脚本生成特殊构造的RAR压缩包,其中包含带有16个".."路径的STM服务块。解压时WinRAR未正确处理路径拼接,导致恶意文件被投递到任意目录。分析发现WinRAR直接拼接主文件和ADS路径传入CreateFileW,未对穿越路径进行过滤验证。测试表明关闭安全软件防护后,攻击可成功执行。建议用户升级到最新版本并保持安全软件开启防护
2026-03-29 00:53:05
672
原创 _mbsncat多字节字符串长度计算错误(CWE-135)
摘要:本文分析了多字节字符串处理函数_mbsncat的漏洞成因。该函数在拼接字符串时未进行边界检查,且对多字节字符处理存在缺陷。当开发者预留1字节缓冲区但未考虑多字节字符占用2字节时,会导致缓冲区溢出。通过示例代码展示了在GBK编码环境下,向预留1字节的缓冲区追加1个多字节字符(0x81,0x41)会触发溢出,破坏相邻内存数据,最终导致程序崩溃。调试分析验证了该漏洞的实际危害性。
2026-03-26 00:06:18
489
原创 UPX脱壳分析
本文详细介绍了UPX加壳与脱壳的全过程。首先使用Visual Studio编写简单的C程序,通过UPX-5.02工具进行快速压缩(压缩率80.95%),并用DIE工具验证加壳成功。然后分析了加壳后程序在入口点、镜像大小、节区结构等方面的变化特征。在脱壳环节,采用ESP定理定位恢复现场操作,找到原始OEP地址;使用Scylla工具进行内存dump和IAT修复,最终成功脱壳并恢复了可执行程序。通过IDA分析验证,脱壳后程序可正常反编译查看原始代码逻辑。整个过程展示了UPX壳的压缩机制和逆向分析方法。
2026-03-22 18:15:35
595
原创 PE文件DLL延迟加载(x64)
本文通过实验分析了PE文件中延迟导入表的工作原理。编写了调用MessageBoxA的C程序,配置user32.dll为延迟加载。静态分析显示延迟导入描述符结构包含DLL名称、IAT和INT等RVA地址。动态调试发现首次调用时,程序通过__delayLoadHelper2函数动态加载DLL并获取函数地址,将地址写入IAT,完成调用。后续调用可直接使用IAT中的地址,无需重复加载。实验验证了延迟导入机制通过运行时动态加载DLL实现按需导入的功能。
2026-03-19 02:11:53
522
原创 PE文件导入表解析(x64)
本文详细解析了PE文件加载过程中导入表处理的流程。首先,加载器通过PE头定位导入数据目录,获取导入表RVA和大小。随后遍历导入描述符数组,对每个DLL执行加载操作:1)读取DLL名称并加载到内存;2)解析导入函数,通过OriginalFirstThunk获取函数名或序号;3)计算函数绝对地址并写入IAT表。文中以VCRUNTIME140.dll为例,展示了从INT获取函数名到最终填充IAT地址的完整过程,并验证了内存中IAT表项与符号地址的一致性。整个流程确保了程序能正确调用外部DLL函数。
2026-03-19 01:56:42
655
原创 umask()误用(CWE-560)
本文分析了CWE-560漏洞,即错误使用umask函数导致权限配置问题。文章首先解释了chmod和umask的区别:chmod直接设置权限(如777表示rwxrwxrwx),而umask是权限屏蔽码(如022表示减去写权限)。Linux默认umask值(root为022,其他为002)会影响新建文件的权限(文件666-umask,目录777-umask)。通过代码示例展示开发者误将umask当作chmod使用(如设置umask(0644)),导致实际权限为----w--w-,造成安全风险。最后建议使用str
2026-03-14 23:20:12
326
原创 PE文件重定向机制分析
摘要: PE文件中的.reloc节(重定位表)是支持地址无关代码(PIC)和ASLR的关键结构。当程序无法加载到首选基址(ImageBase)时,操作系统通过.reloc表修正代码中的硬编码地址。其核心数据结构由多个重定位块组成,每个块包含起始RVA、块大小及类型偏移条目(高4位为类型,低12位为偏移)。实例分析表明,加载器根据delta(实际基址-首选基址)修改目标地址值,而.reloc表本身保持不变。若缺失.reloc表且基址冲突,程序将崩溃。
2026-03-11 22:09:31
698
原创 2018护网杯题目easy_dump
本文记录了取证分析的全过程:首先使用Volatility工具分析内存镜像,通过进程分析发现notepad.exe可疑进程;随后通过内存转储和字符串分析找到线索,扫描提取出隐藏的jpg文件;接着使用binwalk从图片中提取出磁盘镜像文件,分析发现坐标数据;最后通过图像重建获得维吉尼亚密码密钥,并恢复删除的密文完成解密。整个流程展示了从内存取证到磁盘分析、隐写提取再到密码破解的完整技术链,涉及Volatility、binwalk等多种工具的综合运用。
2026-03-09 18:38:56
322
1
原创 基于字母表编码的希尔加解密
摘要:该网站采用矩阵加密方法,要求密钥至少9个字符,由a-z字母、空格、逗号和句号组成(共29种字符)。密钥按列排列成方阵(如3×3或4×4),不足部分用重复机制填充:n阶方阵每列最后n-1个字符会被重复使用。实际参与加密的是经过重复排列后的矩阵,要求该矩阵可逆。加密时,明文需填充至3的倍数长度,再与密钥矩阵相乘。高阶密钥会丢失部分字符(n阶丢失(n-1)(n-3)个),只有排列后的矩阵参与加密计算。(150字)
2026-03-08 17:20:27
549
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅