首页 > 其他分享 >pwn第二课

pwn第二课

时间:2024-04-27 15:02:50浏览次数:18  
标签:可执行文件 第二课 int 编译 swap pwn shared 链接

静态链接

静态连接是将多个文件链接在一起并生成可执行文件的过程
示例代码:
a.c

extern int shared;
extern void swap(int* a,int* b);

int main(){
	int a=10;
	swap(&a,&shared);	
}

b.c

int shared = 1;
int swap(int* a,int* b){
	*a ^= *b ^= *a ^= *b;
}

将这a.cb.c编译,使用下方命令

gcc -c a.c b.c -fno-stack-protector -m32

参数:

  • -c: 在第一课中使用过,将a.c编译为a.o文件不进行链接
  • -fno-stack-protector: 禁用栈保护。默认会开启栈保护(GCC默认会增加一些代码来检测栈溢出),删除就会让编译的程序更小方便我们分析
  • -m32: 将a.c编译为32可执行文件

使用上述gcc命令会将a.cb.c编译为a.cb.o的可执行文件,由于没有做链接,是无法执行的。
我们可以通过分析a.ob.o来更深入的理解ELF文件的格式

标签:可执行文件,第二课,int,编译,swap,pwn,shared,链接
From: https://www.cnblogs.com/Junglezt/p/18162047

相关文章

  • pwn知识——劫持tcache_perthread_struct(Ubuntu22.04之前)
    前言(可忽略)堆不愧是堆...知识点真的要多用动调查看堆的状态才好理解tcache_perthread_struct的结构源码#defineTCACHE_MAX_BINS64/*Weoverlaythisstructureontheuser-dataportionofachunkwhenthechunkisstoredintheper-threadcache.*/typedefst......
  • pwn第一课
    硬件基础计算机低速I/O部件由南桥芯片收集信号连接北桥,北桥通过总线和CPU通信操作系统负责提供抽象接口和管理硬件资源操作系统通过多任务系统对CPU进行管理操作系统使用分页模式对内存进行管理操作系统读写I/O端口来实现对磁盘进行管理CPU通过MMU(memorymanagementun......
  • 吴恩达机器学习-第二课-第四周
    吴恩达机器学习学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。决策树决策树模型(DecisionTreeModel)猫分类示例通过决策树模型判断是否为猫一些术语:根结点,决策节点(包括根结点),叶子结点决策树算法是在所有的决策树模型中选一个效果很好的学......
  • pwn知识——劫持__malloc_hook(在加入tcache以后)
    导论动调是最好的导师!malloc_hook函数解析malloc_hook是malloc的钩子函数,在执行malloc时,会先检测__malloc_hook的值,如果malloc_hook的值存在,则执行该地址(值里边表现为十六进制,可以成为地址),也就是说,如果我们成功劫持malloc_hook以后并修改它的值为one_gadget,我们就能getshell并......
  • 吴恩达机器学习-第二课-第三周
    吴恩达机器学习学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。如何在机器学习项目中决定下一步做什么当训练模型后效果并不好,下一步可以考虑:1.使用更多训练数据2.使用更少或更多的特征值3.尝试采用多项式特征值4.减少或增加正则化参数λ下面......
  • pwn知识——(x86)格式化字符串中利用fini_array及拓展
    导言这类题型还是我复现CISCN_2019_西南的PWN1的时候遇见的,算是涨知识了前置知识我们都知道,在程序中最先调用的不是main,也不是__libc_start_main,而是_start,我们来看一下再x86下的_start.text:08048420public_start.text:08048420_start......
  • 吴恩达机器学习-第二课-第二周
    吴恩达机器学习学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。TensorFlow实现神经网络模型训练细节训练步骤与和逻辑回归的比较训练模型分为三步:1.确定f(x)函数2.确定损失函数和代价函数3.通过数据训练寻找最小值详细介绍1.创建模型2.......
  • 做re不小心噶了然后转生成为pwn高手
    ret2text一个简单的栈溢出栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数,因而导致与其相邻的栈中的变量的值被改变。这种问题是一种特定的缓冲区溢出漏洞,类似的还有堆溢出,bss段溢出等溢出方式。栈溢出漏洞轻则可以使程序崩溃,重则可以使攻击者......
  • 一种新的姿势:程序try/catch抛出异常之绕过canary pwn121
    一种新的姿势:程序try/catch抛出异常之绕过canary我前面发了不少关于绕过canary的姿势,先总结一下,现在绕过canary的姿势有泄露,爆破,格式化字符串绕过,多线程劫持TLS绕过,stack_smashing,今天介绍一种新的姿势,就是程序处理异常时,如果异常被上一个函数的catch捕获,那么上个函数的rbp就会......
  • 攻防世界 Level0 PWN
    查壳[*]'\level'Arch:amd64-64-littleRELRO:NoRELROStack:NocanaryfoundNX:NXenabledPIE:NoPIE(0x400000)ida//mainint__cdeclmain(intargc,constchar**argv,constchar**envp){writ......