• 深入理解ret2dlresolve

    在一开始打pwn时我们就接触过plt表和got表这两个用来动态加载libc函数的重要部分,不过当时我对其理解只限于got表在经过一次调用函数后,里面存着的就是libc中的具体函数指针;而plt表则是我们调用一个函数时事先跳转到的地方,其会跳转到对应got表位置处存的地址。现在我们来学一下是经过了一个什么过程才把真正的函数指针填到got表中,并深入分析一下哪里存在可以利用的点。 其中我们在I...
  • litctf2025 writeup

    Initializaion战队WP 排名34,队员collectcrop,w2194167366,cjyxx web-nest_js 进入没找到什么有用信息(第一次进的时候这个界面都没加载出来,于是dirsearch扫描了)发现了/login 输入东西点立即登录发现没有反应,于是bp抓包查看 如果用户名或密码错误会显示Invalid credentials,这里猜测用...
  • 从零开始搭建自制操作系统——中断管理

    这里我们的目标是实现一个32位的操作系统,所以后面介绍相关的内容默认都是32位下的。 基本概念 IDT表 中断描述符表 ( IDT ) 用于告知 CPU中断服务程序(ISR) 的位置(每个中断向量对应一个)。它的结构类似于全局描述符表(GDT)。 IDT的结构是由 CPU 架构规范定义的,所以对于某一类 CPU(比如 x86),结构是固定的。IDT 的结构必须符合 CPU 要...
  • 从零开始搭建自制操作系统——基础概念&bootloader编写

    基础概念 实模式与保护模式 特性 实模式(Real Mode) 保护模式(Protected Mode) CPU 架构 最初 8086 从 80286 起支持 最大寻址内存 1MB 4GB(32位)或更高(64位) 位宽 16 位 32 位(或后来的 64 位) 内存访问方式 段:偏移(Se...
  • 深入理解modprobe_path提权方式

    深入理解modprobe_path提权方式 源码分析 我们在调用execve去执行一个程序时,实际上会先检查目标文件是否是一个可执行文件, 以linux-5.15.153版本的内核源码为例,我们的目标调用链主要为do_execve->do_execveat_common->bprm_execve->exec_binprm->search_binary_handl...
  • 2025xyctf wp

    一、战队信息 战队名称:Initialization 战队排名:12 二、解题情况 三、解题过程 web-Signin 直接看代码 12345678910111213141516171819202122232425262728293031323334353637383940414243# -*- encoding: utf-8 -*-'''@F...
  • 复杂程序fuzz初探

    复杂程序fuzz初探 什么是fuzz Fuzz(Fuzzing,模糊测试)是一种自动化测试技术,用于发现程序中的漏洞或异常行为。它的核心思想是向程序输入大量随机、畸形(fuzzed)或异常的数据,观察程序的响应,以检测潜在的崩溃、内存泄漏、安全漏洞等问题。适用于二进制程序测试和Web 渗透测试。结合代码覆盖率分析和符号执行,现代 Fuzzing 工具能够高效发现程序中的安全漏洞,在 ...
  • CUDA编程模型初探

    CUDA编程模型初探 安装 可以在官网选择下载适合自己版本的cuDNN。 然后下载CUDA,根据安装程序的提示配置即可。 之后安装完成后可以把安装好的CUDA根目录下的bin目录设置为环境变量,然后用nvcc测试一下是否设置成功。 然后把之前下好的cuDNN中的lib、bin、include目录下的所有文件都拷贝到我们CUDA对应的目录。 然后我们打开VS2022就能创建一个...
  • seq_operations搭配pt_regs的kernel利用手法

    seq_operations搭配pt_regs的kernel利用手法 seq_operations简介 seq_operations 是 Linux 内核中的一个结构体(struct seq_operations),用于实现 seq_file 机制。seq_file 机制提供了一种统一的方式来访问可变长度的数据,主要用于 /proc 文件系统,以简化内核导出信息的操作。 str...
  • Algorithmica-HPC研读记录2

    Algorithmica HPC研读记录(4-6章) 四、编译(Compilation) 概述 学习汇编语言的主要好处并不在于能够用它编写程序,而是在于理解编译后的代码在执行过程中发生了什么,以及它对性能的影响。 在极少数情况下,我们确实需要手写汇编代码以达到最高性能,但大多数时候,编译器本身就能生成接近最优的代码。如果编译器未能做到这一点,通常是因为程序员比编译器掌握了更多关于问...
1234