- 博客(15)
- 收藏
- 关注
原创 浅析封装NT函数绕过检测机制与免杀技术
NT函数(即“Native”函数)是微软Windows操作系统内部提供的一组底层系统调用,这些函数位于NT层,也称为Windows NT内核层。这些函数直接与操作系统的内核交互,提供了底层的操作功能,比如内存管理、线程管理、进程创建等。与之相对的是Windows API,后者是为用户应用程序提供的更高级接口。NT函数的调用通常直接通过ntdll.dll库中的相关函数来实现。
2025-03-18 17:27:01
903
原创 进程注入bypass
Control Flow Guard(CFG)是一种微软引入的防护技术,最早在 Windows 8.1 中加入,并在 Windows 10 及后续版本中得到了加强。它的核心目标是防止程序中的恶意代码劫持控制流,从而实现对系统的恶意操作。在正常程序运行中,程序的控制流(即代码的执行顺序)会根据不同的条件跳转到不同的位置。攻击者通过注入恶意代码或者篡改程序控制流,能够导致程序执行恶意操作,如获取管理员权限、窃取数据等。
2025-03-17 13:50:56
597
原创 静态bypass
在这里我们还需明白几个概念(有C基础跳过) 通过隐藏IAT表可以静态bypass市面上大部分edr。//win32就是使用Windows提供的原生api实现我们的功能。//1、预处理 处理头文件 宏定义。//3、处理汇编 将汇编转成二进制。//2、处理编译 将代码转成汇编。//4、生成link exe。必须要有进程才有线程。
2025-03-13 14:50:36
457
原创 CVE-2023-37474
Copyparty是一个可移植的文件服务器。在1.8.2版本之前的版本存在一个CTF技巧,该漏洞位于`.cpr`子文件夹中。路径遍历攻击技术允许攻击者访问位于Web文档根目录之外的文件、目录.
2025-03-13 14:21:03
133
原创 CVE-2023-27179
GDidees CMS v3.9.1及更低版本被发现存在本地文件泄露漏洞,漏洞通过位于 /_admin/imgdownload.php 的 filename 参数进行利用。在得知会下载一个文件后我们可以使用curl命令也可以得到flag。根据对于漏洞的描述抓包分析可以发现下载了一个etc.png。可以得到flag.png 将后缀改为txt即可得到flag。
2025-03-13 14:18:56
144
原创 Windows 入侵排查
b、单击开始菜单 >【运行】,输入 msconfig,查看是否存在命名异常的启动项目,是则取消勾 选命名异常的启动项目,并到命令中显示的路径删除文件。a、登录服务器,单击【开始】>【所有程序】>【启动】,默认情况下此目录在是一个空目录,确认是否有非业务 程序在该目录下。c、单击【开始】>【运行】,输入 regedit,打开注册 表,查看开机启动项是否正常,特别注意如下三个注册表项。a、单击【开始】>【设置】>【控制面板】>【任务计划】,查看计划任务属性,便可以发现木马文件的路径。
2025-03-10 17:34:01
793
原创 中断门&陷阱门&任务门&任务段
JMP FAR和CALL FAR可以通过段选择子找到对应的GDT段描述符,当DPL=11可以在3环使用,IDT全名中断描述符表,同GDT表一样,IDT也是由一系列描述符组成的,每个描述符占8个字节,LTR指令必须运行在0环,LTR指令只修改TR段寄存器,并不会触发TSS进行全部寄存器值切换。Windows很多3环API最终都要使用0环的代码,是使用中断门实现的这种功能。使用JMP FAR实现任务切换时,TSS结构体中的Link值在任务切换之后为0。Windows没有使用调用门,但是使用了中断门。
2025-03-10 17:29:22
491
原创 DVWA 文件包含File Inclusion
执行后会写入一个shell.php的后门代码通过前面我们利用报错得到路径。源码分析对我们传入的参数进行了file限制我们文件路径头必须是file。,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用。llow_url_fopen和allow_url_include为ON。开发人员一般希望代码更灵活,所以将被包含的文件。对http://和../,..\有过滤直接用双写绕过就行。服务端又没有做合理的校检或者校检被绕过。则可能存在远程文件包含漏洞。就造成了文件包含漏洞。
2024-05-18 19:11:31
297
原创 jarvisoj_level2[BUUCTF]
从反汇编后的代码可以看出read()这个函数对buf进行写入时存在缓冲区溢出,IDA会告诉我们buf数组与ebp在栈上的相对位置,即&buf=$ebp-0x88,因此我们需要填充0x88个字符就能到达ebp的位置,然后再填充4个字符就能到达eip的位置,并且system()的地址可以轻松在plt表中找到,为0x08048320,因此我们只需要在构造一个shell路径的字符转就可以getshell了。
2024-05-09 22:28:34
305
原创 [V&N2020 公开赛]warmup[BUUCTF]
因为是64位的程序,参数的传递需要用到堆栈,64位与32位函数调用在这里就不再赘述,所以我们还需要rdi,rsi,rdx来传递参数,一块空的内存用来存放我们flag。给了我们puts函数的地址所以可以泄露出libc基址,通过libc基址泄露出write,read,open三个函数的地址。execve被禁止了,这类沙箱一般都可以通过write,open,read这三函数来实现flag读进去写出来。这个函数定义了很多局部变量,不太懂看了其他师傅的wp,这个函数是用于设置沙箱机制。sub_9A1()可以溢出。
2024-05-08 17:24:30
495
1
原创 others_shellcode[BUUCTF]
在 x86 架构的 32 位模式下,int 0x80 是一个软件中断指令,用于从用户空间调用内核空间的服务,即 Linux 系统调用。这个指令会触发一个异常,将控制权传递给内核的异常处理程序,该程序会解析由用户空间代码设置的系统调用号和参数,并执行相应的内核服务。然而,需要注意的是,在 x86-64(也称为 AMD64)架构的 64 位模式下,Linux 采用了不同的系统调用机制。寄存器中,参数则根据系统调用的不同而有所变化,但通常也会存储在寄存器中。指令时,系统调用号通常存储在。寄存器,将参数按照约。
2024-05-07 16:02:29
695
原创 [OGeek2019]babyrop[BUUCTF]
首先我们要确保strncmp=0保证程序不退出,直接让v1=0strncmp就会为0strncmp用来获取长度当读到"\0"会自动赋0所以我们让buf[0]="\x00"没有/bin/sh和system加上题目这道题的思路就是利用write泄露出libc的地址来进行ROP。buf长度只需0xe7+4就可以溢出。32位开了NX,地址随机化基本排除shellcode的可能。write也是libc库中的标准函数。shift+f12看字符串。
2024-05-06 17:11:26
442
原创 [HarekazeCTF2019]baby_rop[BUUCTF]
这个时候思路就很清晰了根据64位函数传参的特点构造ROP链就行,32位与64位传参的区别这里就不再赘述,读者可以看上一篇jarvisoj_level2_x64[BUUCTF] ,根据名字可以猜到这道题考的rop同时是64位的程序。用find -name flag查找路径再cat。
2024-05-05 22:46:05
444
2
原创 jarvisoj_level2_x64[BUUCTF]
32位中参数都是保存在栈上,但在64位中的前六个参数依次保存在RDI,RSI,RDX,RCX,R8和 R9中,如果还有更多的参数的话才会保存在栈上。read函数存在溢出同时发现有/bin/sh所以我们思路就是构造溢出到/bin/sh,但是由于是64位的程序在函数调用时与32位不同。由32位变成了64位。payload的组成 无用数据+pop rdi+函数参数+函数调用地址/bin/sh+函数返回地址system。回到这道题 64位会依次传函数返回地址,函数参数,函数调用地址,
2024-05-04 22:17:26
546
1
原创 ciscn_2019_c_1[BUUCTF]
但是程序中没有直接可以用的system函数所以需要我们自己构造ROP链通过gets函数泄露出libc基址构造payload来泄露libc。在amd64架构下参数通过rdi传递0x400c83就是我们需要pop_rdi的地址。拿到题先三板斧hecksec --file=ciscn_2019_c_1看保护。开启了NX优先考虑ROP但是关闭了PIE则可能存在缓冲区溢出。查看堆栈窗口得到缓冲区大小 构造0x50+0x8即可溢出。得到 /bin/sh的地址。发现gets函数存在溢出。如果不行就换一个libc。
2024-05-03 23:27:39
882
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人