pwn入门(0.0)

news2024/12/23 22:09:19

单字节:byte

双字节:词或字word

四字节:双词Dword,doubleword

八字节:四词Qword,quadword

16字节:double quadword

RBX:存储地址

RCX:计数器循环

RDX:整除取余

RSP:栈顶

RBP:栈底

RSI:源目标索引寄存器,寻址
RDI:源目标索引寄存器,寻址

lea:取地址

push:操作数压入栈顶,栈顶指针减小

pop:对应

pushad:所有通用寄存器压到栈顶

popad:堆栈栈顶数弹出到所有的通用寄存器中

ret:从函数返回

inc/dec:递增递减

mil/imul:无符号整数乘法/有符号整数乘法

div/idiv:无符号整数除法/有符号整数除法

and/or/not/neg:与/或/逻辑非(反码)/非(补码)

je:相等跳转

jne:不相等跳转

loop返回循环入口

xor:异或,可以避免坏字节/x00的出现;xor eax eax;赋值0

反编译工具

IDA

Objdump,默认AT&T语法。可以-M intel参数改变

内存

代码区,数据区,堆区,栈区

堆区可以自己请求内存,再返还给堆区。

栈区存储函数调用关系。

函数调用

程序执行要确定下一条指令的地址,就是PC,寄存器位EIP即指针寄存器。控制程序执行流就可以控制EIP指针来做到

每个函数都有属于自己的栈帧,如何保证函数栈帧正确,通过esp和ebp。
在这里插入图片描述
在这里插入图片描述

sub esp,xxx;
add esp,xxx;

为定义变量扩展空间,定义一个char a[10],就把栈顶指针向上抬。

objdump -d 文件 -M intel

也可以查找程序含有对应指令的地址

objdump -d file | grep 指令(例如pop)
objdump -d file -M intel | grep 指令(例如pop)

在这里插入图片描述
返回finish

删除断点

d num

修改寄存器

set $rax=0x66666666

Linux查看进程PID

ps -a

ps -aux

插件功能

查看地址等信息

vmmap

查看栈的信息

stack

查看堆信息

heap

例如

#include <stdio.h>
#include <stdlib.h>
int main
{
    char *str1=malloc(100);
    scanf("%s",str1);
    printf("%s",str1);
    char *str2=malloc(100);
    char *str3=malloc(100);
    free(str1);
    free(str2);
    return 0;
}

向堆空间索要内存;

gdb a.out
b main
r
heap

在这里插入图片描述

 x/20gx 0x555555756000

查看对应堆空间内存的情况

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

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

相关文章

onnx模型转TensorRT模型时出错

把onnx模型转TensorRT模型出错 错误一&#xff1a;WARNING: onnx2trt_utils.cpp:366: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32. 解决方法 1、安装onnx-simplifier pip…

ts 装饰器

使用装饰器前&#xff0c;需要把 tsconfig.json 中 experimentalDecorators 设置为 true学习了小满的B站课程&#xff1a;https://www.bilibili.com/video/BV1wR4y1377K?p24 前言 ts中有几种装饰器类型&#xff1a; 类装饰器 ClassDecorator方法装饰器 MethodDecorator参数装…

NFTScan | 05.29~06.04 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.05.29 ~ 2023.06.04 NFT Hot News&#xff1a;NFT 热点资讯 01/ 数据&#xff1a;NFT 巨鲸 Pranksy 以 52.17 枚 ETH 抛售 25 枚 Doodles 5 月 29 日&#xff0c;据 NFT Whale Aler…

Java + lua

luaj 主要特征 luaj 用法示例 luaj 实现原理 查找并调用指定的 Java 方法 从 Java 方法获取返回值 将 Lua function 作为参数传递给 Java 方法 在某些业务场景下&#xff0c;我们可能会遇到 lua 中要调用 java 代码情况&#xff0c;当然这个用 JNI 肯定是可以做到的&…

三十六、数学知识——组合数(递推法 + 预处理法 + 卢卡斯定理 + 分解质因数求解组合数 + 卡特兰数)

组合数算法主要内容 一、基本思路1、组合数基本概念2、递推法——询问次数多 a b 值较小 模处理&#xff08;%mod&#xff09;3、预处理阶乘方法——询问次数较多 a b 值很大 模处理&#xff08;%mod&#xff09;4、卢卡斯定理——询问次数较少 &#xff08;a b 值很大&am…

泰克AFG31051信号发生器产品参数

AFG31000系列任意波函数发生器 概述 验证连接 DUT 后输出波形 InstaView? 技术用在任意波函数发生器上可直接查看连接 DUT 后的实时波形&#xff0c;无需使用示波器或其他设备&#xff0c;节省测试时间并避免因阻抗不匹配导致的实验错误。 高保真度信号与高级模式 在连续模式…

软考高级架构师笔记-6计算机系统性能评价信息系统基础知识

目录 1. 前言 & 考情分析2. 系统配置与性能评价1. 性能指标2. 性能指标3. 阿姆达尔解决方案3.信息系统基础知识1.信息系统的分类2.信息系统的生命周期3.信息系统战略规划3.常见系统介绍1.客户关系管理CRM2.供应链管理SCM3.企业应用集成EAI4.结语1. 前言 & 考情分析 前…

VR全景创业是否真的赚钱?项目真的靠谱吗?

说到创业&#xff0c;也许你心里会觉得这类项目对于技术和资金等要求都是比较高的&#xff0c;先别急着反驳&#xff0c;这是大多数人的心理。我们选择某个创业项目时&#xff0c;都需要从创业成本和盈利利润来做预算&#xff0c;现在告诉你有一个VR全景创业项目&#xff0c;几…

爆火的AIGC到底是一片新蓝海,还是又一次的泡沫?

自ChatGPT发布以来&#xff0c;陷入了AIGC热&#xff0c;无论是大众的讨论、资本的流向还是大厂的加入&#xff0c;AIGC似乎都会是未来几年内最火的新蓝海。 不同于以往的“顶尖科技”泡沫&#xff0c;AIGC是真正可以应用到生活中的&#xff0c;这也是为何它会引发大量“失业论…

操作系统 复习--实训题

一. 简答题&#xff08;共8题&#xff0c;100分&#xff09; 1. (简答题) 编程使用fork()函数创建子进程&#xff0c;要求父进程中打印当前进程的 PID 和子进程的 PID&#xff0c;而在子进程中只打印当前进程的 PID。 参考代码&#xff1a; int main() { pid_t child_pid;c…

使用openlayers加载geoserver发布的arcgis瓦片

openlayers版本&#xff1a;6.5 geoserver版本&#xff1a;2.18.0 1. geoserver发布arcgis瓦片 首先去maven上面找最新的gwc-arcgiscache https://mvnrepository.com/artifact/org.geowebcache/gwc-arcgiscache/1.19.1 把这个jar包下载下来放到目录geoserver/WEB-INF/lib下面…

可扩展性与生态应用:Ardor公链AMA回顾

近日&#xff0c;Jelurida团队工程师Francisco Sarrias做客CryptoWallet.com&#xff0c;分享了一些有关Ardor的话题&#xff1a; Ardor是什么&#xff1f; Ardor是一个旨在提高区块链可扩展性的开源平台&#xff0c;这意味着该项目有助于使区块链网络运行更顺畅&#xff0c;用…

10分钟通过云服务器搭建自己的chatGPT镜像服务

通过云服务器搭建自己的chatGPT镜像服务 前提&#xff1a;需要有自己的API KEY 1 购买云服务器 本教程以阿里云的云服务器为例。 阿里云地址&#xff1a;https://www.aliyun.com/?spm5176.28008736.J_3207526240.1.769d3e4dTtNjuI 进入阿里云官网&#xff0c;选择云服务器ECS进…

精选博客系列|VMware如何实现多云基础设施

私有云&#xff0c;公有云&#xff0c;多云&#xff0c;边缘云… 如今&#xff0c;组织的团队、数据和工作负载分布在各种环境中。毫无疑问&#xff0c;这导致了技术上的复杂性增加、安全风险加剧、成本飙升和云战略不连贯的问题。 “39% 的高管难以在&#xff08;他们的&…

18.4:打印一个字符串的全部排列

打印一个字符串的全部排列 方法一&#xff1a;暴力方法。 //方法一&#xff1a;暴力方法。public static List<String> permutation1(String s) {//str是一个存储字符类型的有序表。ArrayList<Character> str new ArrayList<>();//将字符串中的类型存储在s…

Zookeeper概述

​ ZooKeeper概述 ZooKeeper是什么 zookeeper是一个为分布式应用程序提供的一个分布式开源协调服务框架。是Google的Chubby的一个开源实现&#xff0c;是Hadoop和Hbase的重要组件。主要用于解决分布式集群中应用系统的一致性问题。提供了基于类似Unix系统的目录节点树方式的数…

docker 安装 nsq

一. nsq介绍 nsq介绍 NSQ是一个基于Go语言&#xff0c;由bitly公司开源出来的一款简单易用的消息中间件。 官方和第三方开发了众多客户端功能库&#xff0c;如基于HTTP的nsqd、Go客户端go-nsq、Python客户端pynsq、基于Node.js的JavaScript客户端nsqjs、异步C客户端libnsq、J…

JavaSE-02【类型转换和运算符】

第一章&#xff1a;数据类型转换 Java程序中要求参与计算的数据&#xff0c;必须要保证数据类型的一致&#xff0c; 如果数据类型不一致则发生类型的转换1.1 自动转换 自动转换&#xff1a;将取值范围小的类型自动提升为取回范围大的类型 自动类型转换原理&#xff1a;一个i…

MySql锁知识记录积累(一)

1.关于脏读、幻读和不可重复读 脏读&#xff1a;一个事务A读取到了另一个事务B未提交的数据&#xff0c;叫做脏读 不可重复读&#xff1a;事务A被事务B干扰到了&#xff01;在事务A范围内&#xff0c;两个相同的查询&#xff0c;读取同一条记录&#xff0c;却反返回了不同的结…

运行一个新vue项目踩坑

npm install报错了&#xff0c;主要是因为node版本太高了。去node官网&#xff0c;下载低版本的msi后缀的文件&#xff0c;运行安装。在vs code里&#xff0c;npm下载依赖&#xff0c;并运行即可。 1. 无法cnpm cnpm : 无法加载文件 D:\Program Files\nodejs\node_global\cnpm.…