【PWN】学习笔记(三)【返回导向编程】(中)

news/2024/5/20 0:36:51 标签: 学习, 笔记, CTF, PWN

目录

  • 课程
  • 回顾
  • 动态链接过程

课程

课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source=7b06bd7a9dd90c45c5c9c44d12e7b4e6
课程附件: https://pan.baidu.com/s/1vRCd4bMkqnqqY1nT2uhSYw 提取码: 5rx6

回顾

在这里插入图片描述
管道符 | 把前一个指令的输出作为后一个指令的输入,等同于数据注入
grep 的作用等同于把输入中含有后一个参数(eax)的字符串输出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
值得注意的是,除了用IDA找/bin/sh的地址,还可以用pwntools中的函数来找。

动态链接过程

在这里插入图片描述
在这里插入图片描述
之前的ret2syscall之所以都可以找到gadget是因为静态链接,都写入了elf中
在这里插入图片描述
在这里插入图片描述
相同的程序动态链接和静态链接的函数数量显然不同
在这里插入图片描述

在这里插入图片描述
.text是代码节
foo@plt,foo是我们写的自定义函数,plt是程序中代码段中保存函数解析真实地址的节
PLT0最开始的两个指令是push 以及 jmp
.got.plt保存两个数组,其存放的位置是数据段
在这里插入图片描述
编译这段程序之后会生成一段汇编代码,在汇编中调用一个用户函数会使用call这个指令,调用存在于动态链接库中的函数(foo)
但是这里没法直接找到foo(因为压根没有),所以会在代码段中一个特殊的位置plt节(里面也是代码),没有在动态链接库中找到的函数都会在plt中创建一个表项
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
进入fool@plt表项中,首先jmp到GOT表中fool的位置。
.got.plt的作用是保存所有全局函数真实地址的表
在这里插入图片描述
由于第一次调用GOT表还没有fool函数的真实地址,所以又返回plt中的fool;由此便知道应该去寻找fool函数的真实地址,将其填入GOT并且跳转到fool函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
dl_resolve用于解析fool函数实际地址的任务
在这里插入图片描述
解析完成后会把fool函数真实地址填入.got.plt的表项中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按空格键来到汇编代码的视图
在这里插入图片描述
向操作系统内核要了程序所需要的资源之后,首先ld.so是装载器,把这些内容装载在内存中
_start是程序的入口
在这里插入图片描述
虚线划分了表项,每个长度是16字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在没有调用时,got中保存的是plt的值

在这里插入图片描述
在这里插入图片描述
在调用一次puts函数后
plt是代码段是不会发生任何变化的,但是got中puts发生变化(填入真实地址)
在这里插入图片描述


http://www.niftyadmin.cn/n/5261989.html

相关文章

Spark环境搭建和使用方法

目录 一、安装Spark (一)基础环境 (二)安装Python3版本 (三)下载安装Spark (四)配置相关文件 二、在pyspark中运行代码 (一)pyspark命令 &#xff08…

某行 webpack 加密算法分析

本次的目标是某行购物网站的加密算法分析,网站如下 aHR0cHM6Ly93d3cuemtoLmNvbS8(注:该网站从整体上看来,是webpack加密,但是本文的实现方式,不是扣js代码也不补环境,因为最后分析此网站用的都…

图像识别的精度与效率优化研究

基于深度学习的图像识别算法研究 摘要:随着深度学习技术的快速发展,基于深度学习的图像识别算法已经成为计算机视觉领域的研究热点。本文将介绍基于深度学习的图像识别算法的基本原理、研究进展和应用领域,并探讨其未来的发展趋势。 一、引言…

小机器人,电子锁,牙刷,表类开关,磁阀开关等一些安防直流驱动的选型介绍分析 5V,大电流,小封装

安防监控是一门被人们日益重视的新兴行业,就目前发展来看,应用普及程度越来越广,科技含量也越来越高,几乎所有高新科技都可促进其发展,尤其是信息时代的来临,更为该行业的发展提供契机。其中安防领域最为典…

C++从Bing采集各行业的企业官网信息

目录 一、引言 二、采集方法 1、使用搜索引擎API 2、使用网页抓取技术 三、数据处理 1、数据清洗 2、数据存储 四、代码实现 1、申请Bing API账号并获取API密钥 2、调用Bing API进行搜索 3、解析搜索结果并提取企业官网信息 4、数据存储 五、总结 一、引言 随着互…

JavaEE:单例模式(饿汉模式和懒汉模式)精讲

前言 什么是单例模式? 其实用通俗的话就是程序猿约定俗成的一些东西,就比如如果你继承了一个抽象类,你就要重写里面的抽象方法,如果你实现了一个接口,你就要重写里面的方法。如果不进行重写,那么编译器就会…

糖类抗原15-3抗体试剂——博迈伦生物

糖类抗原15-3(Cancer Antigen 15-3,简称CA15-3)是一种人体细胞表面的糖蛋白,常用来作为乳腺癌的临床诊断指标。CA15-3的正常参考范围是0~30 U/mL,超过30 U/mL可能是乳腺癌的一个预警信号。 CA15-3对于乳腺癌的筛查和监…

02.尚医通 Mybatis-Plus

1、前期准备 a. 创建数据库 CREATE TABLE USER (id BIGINT(20)NOT NULL COMMENT 主键ID,NAME VARCHAR(30)NULL DEFAULT NULL COMMENT 姓名,age INT(11)NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50)NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id) );INSERT INTO user…