在一开始打pwn时我们就接触过plt表和got表这两个用来动态加载libc函数的重要部分,不过当时我对其理解只限于got表在经过一次调用函数后,里面存着的就是libc中的具体函数指针;而plt表则是我们调用一个函数时事先跳转到的地方,其会跳转到对应got表位置处存的地址。现在我们来学一下是经过了一个什么过程才把真正的函数指针填到got表中,并深入分析一下哪里存在可以利用的点。
其中我们在I...
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
要...
基础概念
实模式与保护模式
特性
实模式(Real Mode)
保护模式(Protected Mode)
CPU 架构
最初 8086
从 80286 起支持
最大寻址内存
1MB
4GB(32位)或更高(64位)
位宽
16 位
32 位(或后来的 64 位)
内存访问方式
段:偏移(Se...
深入理解modprobe_path提权方式
源码分析
我们在调用execve去执行一个程序时,实际上会先检查目标文件是否是一个可执行文件,
以linux-5.15.153版本的内核源码为例,我们的目标调用链主要为do_execve->do_execveat_common->bprm_execve->exec_binprm->search_binary_handl...
一、战队信息
战队名称:Initialization
战队排名:12
二、解题情况
三、解题过程
web-Signin
直接看代码
12345678910111213141516171819202122232425262728293031323334353637383940414243# -*- encoding: utf-8 -*-'''@F...
复杂程序fuzz初探
什么是fuzz
Fuzz(Fuzzing,模糊测试)是一种自动化测试技术,用于发现程序中的漏洞或异常行为。它的核心思想是向程序输入大量随机、畸形(fuzzed)或异常的数据,观察程序的响应,以检测潜在的崩溃、内存泄漏、安全漏洞等问题。适用于二进制程序测试和Web
渗透测试。结合代码覆盖率分析和符号执行,现代 Fuzzing
工具能够高效发现程序中的安全漏洞,在
...
CUDA编程模型初探
安装
可以在官网选择下载适合自己版本的cuDNN。
然后下载CUDA,根据安装程序的提示配置即可。
之后安装完成后可以把安装好的CUDA根目录下的bin目录设置为环境变量,然后用nvcc测试一下是否设置成功。
然后把之前下好的cuDNN中的lib、bin、include目录下的所有文件都拷贝到我们CUDA对应的目录。
然后我们打开VS2022就能创建一个...
seq_operations搭配pt_regs的kernel利用手法
seq_operations简介
seq_operations 是 Linux
内核中的一个结构体(struct seq_operations),用于实现
seq_file 机制。seq_file
机制提供了一种统一的方式来访问可变长度的数据,主要用于
/proc 文件系统,以简化内核导出信息的操作。
str...
Algorithmica
HPC研读记录(4-6章)
四、编译(Compilation)
概述
学习汇编语言的主要好处并不在于能够用它编写程序,而是在于理解编译后的代码在执行过程中发生了什么,以及它对性能的影响。
在极少数情况下,我们确实需要手写汇编代码以达到最高性能,但大多数时候,编译器本身就能生成接近最优的代码。如果编译器未能做到这一点,通常是因为程序员比编译器掌握了更多关于问...