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

发布时间:2023年12月18日

课程

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

回顾

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ret2libc在这里插入图片描述

.got.plt中存放的是代码的地址
在这里插入图片描述
nop滑梯,什么都不做执行下一个指令
在这里插入图片描述
一路nop到shellcode,只要指向nop区域即可;使得地址随机化变得低效
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

做题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

即使程序中没有call system指令,同时也不知道system libc的真实地址;但是我们一定会有system@plt,只要这个程序在任何地方引用过system这个函数
虽然secure函数中system(“shell?!”)没有任何用处,但是system()被放在了plt;如果连这一项都没有就需要在攻击之前泄露大量的信息,把真实地址泄露出来
在这里插入图片描述
在这里插入图片描述
还需要加上溢出ebp的四个字节,所以这里又是112
在这里插入图片描述
这里的padding 就是112个垃圾数据
在这里插入图片描述
可以简化成这个形式,都不需要exit了,不需要老老实实退出程序
在这里插入图片描述
逆向题入门也可以这样做
在这里插入图片描述

ret2libc2

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
找不到/bin/sh
在这里插入图片描述
考虑写入进bss
在这里插入图片描述
在这里插入图片描述

值得注意的是这里调用了gets函数做了两次交互,而不是像之前的题目只发过去payload完事,最后一次交互需要输入/bin/sh
在这里插入图片描述
elf.symbols是程序编译链接时的粘合剂,每一个函数名和变量名都指代了自己存在的位置,在编译时对应名称的符号写入对应的内容
buf2属于变量名也是一个符号
在这里插入图片描述
这里老师是直接再输入了一次,我是在交互时输入
在这里插入图片描述

ret2libc3

在这里插入图片描述
在这里插入图片描述
先把四行字符串放在stdout缓冲区中,使用fflush将缓冲区清空再一口气把这些字符串输出在屏幕上
在这里插入图片描述
考虑到实际题目的代码量,这里可以按n修改这个这个变量的名称
找栈溢出的技巧:在每一个能输入的地方输入超长的数据,一旦崩溃就可能存在栈溢出漏洞
在这里插入图片描述
这里随机输入一个地址程序崩溃,但是这并不是栈溢出的崩溃,这里是地址无效导致的,所以需要找一个有效地址
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在继续输入超长数据时出问题了
在这里插入图片描述
在这里插入图片描述
main函数中用于保存局部变量的区域
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

首先调用子函数为其创建栈帧,将相关信息压栈
在这里插入图片描述
dest的空间是0x38,src的大小的0x100,将其通过strcpy(dest, src);覆盖会导致导致栈溢出
在这里插入图片描述
显然无法完成ret2systemcall
接下来就是ret2libc
plt是代码的填写者,got是代码的保存者
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中f7开头都是libc中的地址,80开头的都是elf本身的地址
在这里插入图片描述
这些f7开头的地址表示这些函数被调用过了,在libc中的地址已被填写,由此我们可以泄露这里面的地址以获取libc中的地址;这里我们选取puts,因为其地址位置高,所以我们在read的时候直接把puts对应的gots表中的起始地址传入
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
值得注意的是我们还有libc的拷贝,只要我们知道偏移量和其中一个值,system的值就可以推导出来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本地还是没打通

文章来源:https://blog.csdn.net/qq_41691212/article/details/134998646
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。