IEEE浮点数表示法
1. 浮点数的存储结构 计算机中的所有数据都是以二进制的形式存储。float类型是32位(4字节),其中: 符号位(1位):0表示正数,1表示负数。 指数位(8位):使用偏移量127(即指数实际值+127)表示。 尾数位(23位):即尾数的二进制表示。 具体存储格式(从高位到低位): 符号位 | 指
18_C基础指针的使用规范、位运算
指针的使用规范 在C和C++中,指针是强大的工具,但如果不小心使用,可能会引发复杂的错误。因此,了解指针的规范使用原则可以帮助编写更安全和易于维护的代码。以下是一些使用指针的规范: 1. 初始化指针 指针变量在声明后,应尽量初始化,避免使用未初始化的指针导致未定义行为。常见的初始化方式包括: 将指针
07_C基础(回车换行、栈结构与函数调用)
函数的机制调用约定及栈细节,包括函数的调用过程、栈结构的形成与利用、以及如何通过栈结构实现函数递归调用。讲解中详细分析了函数调用时参数的传递、返回地址的保存、局部变量的申请与释放等关键步骤,并通过走迷宫的例子展示了递归调用在解决复杂问题中的应用。此外,还提及了函数调用约定的几种类型及其在不同编程环境
01_利用ROP-Ret2Syscall突破NX保护
ROPgadget的使用方法 程序如下
19_C基础文件操作
#include <stdio.h> #include <string.h> int main () { fprintf(stdout, "Hello\n"); /* stdin 标准输入设备 stdout 标准输出设备 stderr 标准错误设备 FI
18_C指针的使用规范、位运算
指针的使用规范 在C和C++中,指针是强大的工具,但如果不小心使用,可能会引发复杂的错误。因此,了解指针的规范使用原则可以帮助编写更安全和易于维护的代码。以下是一些使用指针的规范: 1. 初始化指针 指针变量在声明后,应尽量初始化,避免使用未初始化的指针导致未定义行为。常见的初始化方式包括: 将指针
06_Ret2Shellcode-64位
可以发现我们的字符串/bin/sh只有一个斜杠了,这是因为在32位我们担心会补0,但是64位,可以mov一下都传过去。 #include<stdio.h> char buf2[200]; int main() { setvbuf(stdout,0,2,0); char buf[20]
05_手动制作shellcode并测试
这是shellcode的测试代码,具体用途是把shellcode当作命令运行 这是一段标准的shellcode
04_Ret2Shellcode-32位
Ret2Shellcode和Ret2libc区别在于有没有nx保护,先来讲讲shellcode shellcode Shellcode 是一种小巧的、用于攻击目的的机器代码,其通常在目标系统中执行,以获得控制权或执行特定的指令。Shellcode这个名称来源于早期的攻击目标是获取系统的 shell,