沙箱基础学习
沙箱保护介绍沙箱保护用于限制程序的行为,防止攻击者通过漏洞执行任意代码或敏感系统调用(如execve)。最常见的是禁用一些系统调用,使得我们不能通过系统调用execve或system等获取到远程终端权限,因此只能通过rop链的方式调用orw(即为open**, read, **write)的来读取并打印flag 内容
一般有两种函数调用方式实现沙盒机制,第一种是采用prctl函数调用,第二种是使用seccomp库函数。
orw
open
int open(const char *pathname, int flags, mode_t mode);
第一个参数是文件路径,一般写’flag’即可
后面两个参数一般都设为0,0
read
ssize_t read(int fd, const void *buf, size_t count);
fd 是文件描述符,0标准输入,1标准输出,2标准错误, 3及更高的数字则表示打开的其他文件或资源。使用read函数打开flag文件,故fd=3
第二个参数是地址,将 flag`写入指定的内存地址中,这里是写在**.bss* ...
函数调用约定
Calling Conventions For Reverse Engineering
什么是函数调用约定函数调用约定(Calling Convention)是不同的编程语言或系统平台为函数调用所约定的规范。
主要决定了函数调用过程中参数如何传递、返回值如何传递、寄存器如何使用和保护,以及栈帧的管理方式。
prologue
prologue指的是函数开始部分的代码,用于准备函数的执行环境,设置栈空间和保存调用环境
保存ebp:保存调用者的ebp,以便在epilog中可以恢复。
设置栈指针:将栈指针调整为当前函数的栈框架,为局部变量预留空间。
分配栈空间:为函数的局部变量和栈上参数分配所需空间。
push ebpmov ebp, espsub esp, <stack_space>
在这个例子中:
push ebp:将调用者的基址寄存器ebp压入栈,以便在函数返回时恢复。
mov ebp, esp:将栈指针esp复制到基址寄存器ebp,创建一个新的栈帧基址。
sub esp, <stack_space>:从栈指针中减去一段空间,留给函数的局部变量。 ...
vim使用笔记——蛋老师视频总结
模式模式分类
正常模式(Normal Mode):用于浏览或是宏观处理文本
打开vim之后,就是正常模式,想要进入编辑模式点击i键
编辑模式(Insert Mode):用于添加或是擅改文字
在此模式下对文本进行编辑,编辑完点击ESC退出编辑模式,返回正常模式
命令模式:用于保存退出或是搜索等
想要退出vim就要到命令模式,命令模式就是可以输入命令来指示是否要保存或是退出等等
视觉模式:
模式的切换i——正常模式进入编辑模式
esc——编辑模式退出到正常模式
:——正常模式进入到命令模式
基础应用编辑
新建
先关闭大写锁定,想打开或是新建一个文件就直接输入vim+文件名即可,例如vim ab.c就会打开文件ab
我们打开一个文件,vim的模式在文件下方是有提示的,例如编辑模式就是INSERT,命令模式是:
2.保存
进入命令模式后,点击q!(小写,quit)即为不保存退出;输入wq(write quit),即为保存并退出
编辑
光标移动到当前行,输入yy(yank),即可复制这一行,
复制一个单词输入yw(yank word)
到需要粘贴行数,输入p(past ...
MarkDown语法笔记
一、标题写法如下,,前有多少个**#**就代表是第几级标题
一级标题#一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题
注意# 后要空一个才是标题
二、段落无序段落写法是在内容前加上 + 或 * 或 - ,三个符号效果一至
+ a//形式一- b//形式二* c//形式三
1
2
有序段落 内容在前面加上**数字和.(英文字符)**即可,例如 1. 2.
段落的嵌套使用可以在有序列表中嵌套新的有序列表,也可以在无序列表中嵌套新的无序列表。使用是在嵌套列表前,按住TAB 或是 空格 即可
三、换行在一行的末尾添加两个或多个空格,然后按回车键,即可换行
1
2
四、引用说明类似标题,在于引用内容前加上 > ,有多少个 > 就表示 几级引用。引用说明区块还可以嵌套使用
>一级>>二级>>>三级>>>>四级>>>>>五级>>>>>>六级
一级引用
二级引用
三级引用
四级引用
...