CVE-2024-6944 CRMEB电商系统 反序列化漏洞复现
前言该漏洞是存在于钟邦科技 CRMEB 5.4.0 版本中的一个关键安全漏洞,影响到 PublicController.php 文件中的 get_image_base64 函数。该漏洞的根本原因是由于对用户可控的参数 code 进行处理时,存在不安全的反序列化操作的风险。攻击者可以利用此漏洞,通过发送特制的请求,触发 PHP 的反序列化机制,从而执行恶意代码,最终可能导致远程代码执行(RCE)的严重后果。该漏洞已被公开披露,并且可能被恶意利用。 什么是反序列化漏洞在计算机科学中,序列化 (Serialization) 是将一个对象(例如,PHP 中的一个类实例)转换成可以存储或传输的数据格式的过程。这种格式通常是字符串或字节流。 反序列化 (Deserialization) 则是序列化的逆过程,它将存储或传输的数据格式转换回原始的对象。 为什么需要序列化和反序列化? 序列化和反序列化在很多场景下都非常有用,例如: 存储数据: 将复杂的数据结构(如对象)保存到文件或数据库中。 传输数据: 在网络上传输对象,例如在 API 请求或会话管理中。 缓存:...
CVE-2024-26229 Windows CSC 本地内核提权漏洞复现
前言该漏洞利用Windows CSC驱动程序存在的问题,进行越界写0修改KTHREAD结构中的PreviousMode字段,使其为KernelMode。这样,后续的写操作不会进行权限检查,从而允许我们修改内核数据结构,实现任意地址写入。通过任意地址写入操作,我们可以将当前进程的Token字段替换为系统进程的Token字段。这样当前进程就能够获得系统进程的权限,从而实现提权。 其流程图可简化如下: 漏洞分析如何实现越界写0CSC驱动csc.sys驱动是一个处理客户端缓存(Client-Side Caching)和提供离线文件功能的系统驱动(windows默认启用)。csc.sys允许用户在断网的情况下继续访问和操作网络文件,当用户在没有网络连接的情况下对这些文件进行更改时,这些更改首先影响的是本地缓存的副本;一旦网络连接恢复,CSC.sys 会负责将这些本地更改同步回网络位置,确保网络上的数据与本地的副本保持一致。 NtFsControlFile引发的写0漏洞Windows在涉及与内核通信的时候,会使用一种叫做IRP(I/O Request...
强网杯青少赛write up
EnterGame先用DIE查壳,发现无壳后用IDA打开 发现chacha20,是个对称密码,考虑直接patch输入密文 在判断的地方打个断点 直接动调 把密文patch输入 得到flag Flip_over下载附件用Jadx打开 发现关键函数在native-lib里,用IDA反编译解包的so文件,可以发现加密逻辑是先过RC4,再过DES,最后再过一个异或,看了一下没有魔改,可以先用cyberchef处理之后再最后异或 cipher1 =...
运用标志寄存器实现反调试
前言之前在做BaseCTF的Dont-debug-me的时候,第一次认识到了标志寄存器的作用,索性整理一下~ 标志寄存器与汇编语言的跳转标志寄存器CPU内部的寄存器中,有一种特殊的寄存器具有以下三种作用。1.用来存储相关指令的某些执行结果;2.用来为CPU执行相关指令提供行为依据;3.用来控制CPU的相关工作方式; 这种特殊的寄存器被称为标志寄存器(EFLAG),x86的标志寄存器有32位。 具体每个标志寄存器代表了什么,可以参考学姐的博客汇编语言中的标志寄存器及其相关指令 | Cabelis’s...
使用IDA和Kali虚拟机实现linux动调
最近在做Newstar Week3的时候,SMc_math用IDApython莫名奇妙的少一个方程,于是索性配置一下linux动调的环境 配置前准备IDA Pro、kali虚拟机 具体步骤文件配置从IDA的本地文件中找到dbgsrv文件夹,将里面的文件复制到kali虚拟机中,这里我使用的64位虚拟机,所以需要复制的是linux_server64 在kali中激活文件在桌面打开命令行输入 ./linux_server64 获取kali虚拟机的ip右键联网选项打开连接信息可以获得ip地址,或者在命令行中输入ifconfig也可以 配置IDA远程调试使用IDA打开文件,在动调选项中选择Remote Linux debugger,运行后会出现这个界面 把刚刚在kali中获取到的ip输入到Hostname中,一路OK即可顺利开始调试 ↓ 总结本来还以为配置linux的动调比较麻烦,没想到这么简单,早知道早点搞了XD
0xGame Week2 Writeup
BabyUPX使用UPX脱壳工具之后打开,从encode函数发现加密逻辑是交换字节的高四位和第四位,可以写出exp def decode(encoded_bytes): decoded_bytes = encoded_bytes for i in range(len(decoded_bytes)): high = decoded_bytes[i] & 0xF0 low = decoded_bytes[i] & 0x0F decoded_bytes[i] = (low << 4) | (high >> 4) return decoded_bytesencoded_data = [0x03, 0x87, 0x74, 0x16, 0xD6, 0x56, 0xB7, 0x63, 0x83, 0x46, 0x66, 0x66, 0x43, 0x53, 0x83, 0xD2, 0x23, 0x93, 0x56, 0x53, 0xD2, 0x43, 0x36, 0x36, 0x03,...
浅探SMC
SMC介绍简介SMC,即Self Modifying Code,动态代码加密技术,指通过修改代码或数据,阻止别人直接静态分析,然后在动态运行程序时对代码进行解密,达到程序正常运行的效果。SMC的实现方式有很多种,可以通过修改PE文件的Section Header、使用API Hook实现代码加密和解密、使用VMProtect等第三方加密工具等。 解决方案通常我们应该先寻找被修改的代码,然后开始找有没有自解密函数,接着通过静态分析结合动调恢复被修改的代码 例题分析NewStar 2023 SMCIDA打开发现有反调试和VirtualProtect,可以发现是SMC 可以发现sub_403040被修改了,打开sub_401042( )函数可以发现403040这个数据是经过异或的,可以判断这个就是自解密函数 接着通过打断点进行动调,修改ZF标志位为1绕过反调试 接着继续调试,经过自解密函数后,可以来到403040的部分 按P创建函数,之后F5反编译,即可恢复原来的代码 根据代码解出flag即可 网鼎杯 2020 青龙组...
0xGame Week1 Writeup
一、BabyBase从check_flag函数可以发现base64字符串,cyberchef可以解出flag 0xGame{N0w_y0u_kn0w_B4se64_Enc0d1ng_w3ll!} 二、BinaryMaster直接用IDA打开即可获得flag 0xGame{114514cc-a3a7-4e36-8db1-5f224b776271} 三、SignSignshift+F12检索字符串即可找到flag的另一半 四、Xor-Beginningexp: cipher = "~5\v*',3"v5 = [0] * 30for i in range(len(cipher)): v5[i] = ord(cipher[i])v5[7] = 31 v5[8] = 118 v5[9] = 55 v5[10] = 27 v5[11] = 114 v5[12] = 49 v5[13] = 30 v5[14] = 54 v5[15] = 12 v5[16] = 76 v5[17] = 68 v5[18] = 99 v5[19] = 114 v5[20] =...
TSCTF-J2024 Immey's write up
一、Web1.set set whatF12 修改进度条的最大值为出题人QQ号即可获得flag(做个签到就跑) 二、Reverse1.iPlayIDA打开文件发现是换表base64先求出新的Base64表 v1 = [ 114, 26, 115, 54, 31, 60, 21, 49, 120, 62, 61, 5, 60, 3, 125, 62, 41, 53, 23, 7, 58, 61, 32, 20, 48, 63, 46, 0, 50, 2, 46, 11, 6, 49, 10, 83, 3, 47, 59, 41, 46, 58, 73, 22, 3, 50, 55, 93, 39, 79, 55, 63, 101, 68, 6, 28, 88, 0, 97, 99, 112, 15, 65, 92]string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'new = ''for i in...