当前位置: 首页 > news >正文

1.pwn的汇编基础(提及第一个溢出:整数溢出)

汇编掌握程度

能看懂就行,绝大多数情况不需要真正的编程(shellcode题除外)
其实有时候也不需要读汇编,ida F5
通常都是分析gadget,知道怎么用,
调试程序也不需要分析每一条汇编指令,单步执行然后查看寄存器状态即可
但是必须得会,学pwn必须会汇编

前置准备

一些量词

计算机寻址方式
在当前主流的操作系统中,都是以字节(B)为寻址单位进行寻址,
意味着计算机访问的最小单位是一个字节(B)
类比于人口普查,普查员以每户(B)为单位统计,而不是访问到个人(b) 

计算机并不能直接运行高级语言
我们编写的高级语言程序需要进行编译后才能在计算机上运行。高级语言经过编译之后,经过编译器处理,被打包成一个可执行文件的格式,
那么,计算机真正能够被运行的是机器码01 

机器码
深入底层后,计算机其实很笨,只能完成一些很基本的操作,但是速度很快机器码就是一个个01组成的,为了方便人类阅读,一般都以16进制呈现。
尽管如此,一个个16进制字符可读性仍然很差
汇编语言就是把这些机器指令代码以一个助记符的形式翻译一下,方便人类阅读。

汇编语言就是机器码的一个助记符

寄存器


计算机的指令都是由CPU来执行
在计算机系统结构中,CPU和内存是分开的。
寄存器存在于CPU中,是CPU的直接操作对象

寄存器种类

上述的通用寄存器,通常用于参数传递以及算数运算等通用场合
RSP为栈顶指针,RBP为栈底指针,二者用于维护程序运行时的函数,在之后的调用约定一节会对其进行讲解。
EFLAGS为标志位寄存器,用于存储CPU运行计算过程中的状态,:如进位溢出等。
RIP指针用于存储CPU下一条将会执行的指针,不能直接修改,正常情况下会每一次运行一条指令自增一条指令的长度,当发生跳转时才会以其他形式改变其值

寻址方式

汇编指令

intel中汇编两个操作数指令的目的寄存器都是第一个寄存器
计算机只能完成很基本的操作。这些操作大多是对一些寄存器的值进行修改
这些指令通过排列组合,完成复杂的功能,
两种格式:intel和AT&T
二者差别主要在于源和目的操作数顺序上
可以通过立即数寻址来进行判断 

计算机在执行汇编代码时,只会顺序执行,
通过call、jmp、ret这种指令来完成跳转
所以汇编指令代码的执行流并不像高级语言程序一样流程明确
汇编指令代码会经常跳转导致可读性差一些

  1. AND(位与):

    • and 指令对两个操作数的相应位进行逻辑与运算。
    • 如果两个相应的位都是1,则结果位为1;否则为0。
    • 例如,如果 rax = 1010 (二进制),rbx = 1100 (二进制),执行 and rax, rbx 后,rax 将变为 1000 (二进制)。
  2. XOR(异或):

    • xor 指令对两个操作数的相应位进行逻辑异或运算。
    • 如果两个相应的位相同,则结果位为0;如果不同,则结果位为1。
    • 例如,如果 rax = 1010 (二进制),rbx = 1100 (二进制),执行 xor rax, rbx 后,rax 将变为 0110 (二进制)。

数上下限 

如果是unsigned 也就是无符号数,数据的每一位都是代表数据
如果是signed有符号数,那么数据的最高位会被当作符号位处理
0代表正数,1代表负数。

溢出

数值有上下限范围,那么就不可避免的会有溢出情况。
以32位int为例,有以下四种溢出:


无符号上溢:0xffffffff+1变成0
无符号下溢:0-1变成0xffffffff

简单来说无符号溢出0=1+0xffffffff


有符号上溢:有符号正数0x7fffffff +1 变成负数0x80000000
有符号下溢:有符号数0x80000000-1变成正数0x7fffffff 

简单来说有符号溢出0x80000000=0x7fffffff+1

这就是整数溢出。通常来说原因就是两点
1.存储位数不够
2.溢出到符号位
整数溢出一般配合别的漏洞来使用。

相关文章:

1.pwn的汇编基础(提及第一个溢出:整数溢出)

汇编掌握程度 能看懂就行,绝大多数情况不需要真正的编程(shellcode题除外) 其实有时候也不需要读汇编,ida F5 通常都是分析gadget,知道怎么用, 调试程序也不需要分析每一条汇编指令,单步执行然后查看寄存器状态即可 但…...

迎接AI新时代:GPT-5即将登场的巨大变革与应用前瞻

迎接AI新时代:GPT-5即将登场的巨大变革与应用前瞻 💎1. GPT-5 一年半后发布:AI新时代的来临1.1 GPT-5的飞跃:从高中生到博士生 💎2. GPT-5的潜在应用场景💎2.1 医疗诊断和健康管理💎2.2 教育领域…...

封锁-封锁模式(共享锁、排他锁)、封锁协议(两阶段封锁协议)

一、引言 1、封锁技术是目前大多数商用DBMS采用的并发控制技术,封锁技术通过在数据库对象上维护锁来实现并发事务非串行调度的冲突可串行化 2、基于锁的并发控制的基本思想是: 当一个事务对需要访问的数据库对象,例如关系、元组等进行操作…...

跨境干货|最新注册Google账号方法分享

谷歌账号对做跨境外贸业务的人来说是刚需,目前来说大部分的海外社媒平台、工具都可以用谷歌账号来注册。但是仍然有很多朋友并不知道如何注册这个谷歌账号,今天就来给大家分享2个注册谷歌账号的方法,一个是手机号注册,一个是如何跳…...

MySQL第三天作业

一、在数据库中创建一个表student,用于存储学生信息 CREATE TABLE student( id INT PRIMARY KEY, name VARCHAR(20) NOT NULL, grade FLOAT ); 1、向student表中添加一条新记录 记录中id字段的值为1,name字段的值为"monkey"…...

网络安全应急处理流程

网络安全应急处理流程是指在发生网络安全事件时,组织应采取的一系列措施,以快速响应、控制、恢复和调查网络安全事件,确保业务连续性和数据安全。以下是一个详细的网络安全应急处理流程: 1. 准备阶段 目标:建立和维护…...

昇思25天学习打卡营第12天 | LLM原理和实践:MindNLP ChatGLM-6B StreamChat

1. MindNLP ChatGLM-6B StreamChat 本案例基于MindNLP和ChatGLM-6B实现一个聊天应用。 ChatGLM-6B应该是国内第一个发布的可以在消费级显卡上进行推理部署的国产开源大模型,2023年3月就发布了。我在23年6月份的时候就在自己的笔记本电脑上部署测试过,当…...

中英双语介绍加拿大多伦多(Toronto)

中文版 多伦多概述 多伦多(Toronto)是加拿大最大的城市,也是北美地区重要的经济、文化和金融中心。以下是对多伦多的详细介绍,包括其经济地位、金融中心、人口、地理位置、高等教育、移民政策、著名景点和居住的名人等方面的信息…...

【YOLOv9教程】如何使用YOLOv9进行图像与视频检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...

Text2SQL提问中包括时间的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

点胶系统实战1-项目介绍

准备实战开发如下图的多轴点胶系统实战课程,内容设计界面开发、运动板块开发、任务管理、点胶的控制等。我们将和进入这个领域的初学者门一起进步。 有感兴趣的小伙伴,可以关注点赞,或评论区反馈你们的重点关注的内容,那些部分我…...

【MYSQL】InnoDB引擎为什么选可重复读作为默认隔离级别

InnoDB引擎为什么选可重复读作为默认隔离级别 一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle、SQL Server等,而MySQL却使用可重复读(Read-Repeatable&#x…...

数据列表组件-报表

当数据在后端接口查询到&#xff0c;需要在页面展示出来&#xff0c;如果项目有很多report &#xff0c;可以把列表做一个组件 效果如下&#xff1a; js代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8" /><title&g…...

基于Android Studio订餐管理项目

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 能够实现登录&#xff0c;注册、首页、订餐、购物车&#xff0c;我的。 用户注册后&#xff0c;登陆客户端即可完成订餐、浏览菜谱等功能&#xff0c;点餐&#xff0c;加入购物车&#xff0c;结算&#xff0c;以及删减…...

华为OSPF配置DR和BDR与指定DR

基础配置 <Huawei>sys #进入配置模式 Enter system view, return user view with CtrlZ. [Huawei]un in en #关闭报文弹窗 Info: Information center is disabled. [Huawei]sys R1 #设备名更改为R1 [R1]int g0/0/0 …...

【学习笔记】程序设计竞赛

程序设计竞赛 文章目录 程序设计竞赛0x00 基本操作指南0x01 算法分析0x02 STL和基本数据结构栈队列集合map 0x03 排序插入排序归并排序&#xff08;Merge Sort)快速排序 0x04 搜索技术BFSDFS回溯与剪枝 深度迭代ID A*A star双向广搜 0x05 递推方程0x06 高级数据结构并查集二叉树…...

11-云服务器处理单细胞转录组数据

目录 安装R及相关包 安装 shiny 进行安装包 安装BiocManager 安装Seurat包 网页端Rstudio需打开8787端口 Ubuntu上安装R包linux库缺失 关于服务器配置及相关处理可见:linux学习笔记_hx2024的博客-CSDN博客 安装R及相关包 8-阿里云服务器 ECS配置R及Studio Server-CS…...

vs+qt5.0 使用poppler-qt5 操作库获取pdf所有文本输出到txt操作

先获取poppler库&#xff0c;编译出lib与dll&#xff0c;配置好依赖环境&#xff0c;获取某页所有文本&#xff1a; QList<QString> PDFkitEngine::GetText(int nPageNum) { QList<QString> lstText; Poppler::Page* pPage NULL; pPage GetPage(nPageNu…...

[AIGC] ClickHouse分布式表与本地表的区别及如何查询所有本地表记录

在大规模数据处理和分析场景中&#xff0c;ClickHouse是一种高性能的列式数据库管理系统。ClickHouse支持分布式表和本地表两种表类型&#xff0c;本文将介绍这两种表类型的区别&#xff0c;并探讨如何建表以查询所有本地表的记录。 文章目录 一、ClickHouse分布式表与本地表的…...

202406 CCF-GESP Python 四级试题及详细答案注释

202406 CCF-GESP Python 四级试题及详细答案注释 1 单选题(每题 2 分,共 30 分)第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( ) A. 1 B. 2 C. 3 D. 4答案:C解析:目前CCF组织的GESP认证考试有C++、Pyth…...

UABEAvalonia深度解析:跨平台Unity资源处理终极指南

UABEAvalonia深度解析&#xff1a;跨平台Unity资源处理终极指南 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEAvalonia是一款基于C#开发的跨平台Unity Asset Bundle和Serialized File读取与编辑…...

Elsevier Tracker:三步搞定学术投稿焦虑,你的论文审稿终极监控方案

Elsevier Tracker&#xff1a;三步搞定学术投稿焦虑&#xff0c;你的论文审稿终极监控方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为 Elsevier 期刊投稿后的漫长等待而焦虑吗&#xff1f;每天手动刷新页…...

Qwen2.5-14B-Instruct实战部署:像素剧本圣殿与Jira集成的剧本任务管理方案

Qwen2.5-14B-Instruct实战部署&#xff1a;像素剧本圣殿与Jira集成的剧本任务管理方案 1. 项目概述 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。这个创新性解决方案将先进的大语言模型能力与复古像…...

Kandinsky-5.0-I2V-Lite-5s参数详解:VAE精度设置对视频细节还原度的影响

Kandinsky-5.0-I2V-Lite-5s参数详解&#xff1a;VAE精度设置对视频细节还原度的影响 1. 模型概述 Kandinsky-5.0-I2V-Lite-5s是一款轻量级图生视频模型&#xff0c;能够通过单张首帧图片和简单的运动描述&#xff0c;生成约5秒、24fps的短视频。作为一款专注于快速视频生成的…...

AI翻唱不求人:RVC语音变声器快速入门与实战体验

AI翻唱不求人&#xff1a;RVC语音变声器快速入门与实战体验 1. RVC语音变声器简介 RVC&#xff08;Retrieval-based Voice Conversion&#xff09;是一款基于检索的语音转换工具&#xff0c;它能够将普通人的声音转换为特定角色的声音&#xff0c;实现AI翻唱和语音变声效果。…...

ExoPlayer进阶技巧:利用exo_overlay实现视频浮层效果的5种创意用法

ExoPlayer进阶技巧&#xff1a;利用exo_overlay实现视频浮层效果的5种创意用法 在移动视频应用开发中&#xff0c;ExoPlayer凭借其高度可定制性成为众多开发者的首选。而exo_overlay作为PlayerView中一个常被忽视的强大功能&#xff0c;实际上能为视频播放体验带来质的飞跃。这…...

千问3.5-27B模型量化实践:降低OpenClaw运行成本

千问3.5-27B模型量化实践&#xff1a;降低OpenClaw运行成本 1. 为什么需要量化大模型&#xff1f; 当我第一次在本地部署OpenClaw对接千问3.5-27B模型时&#xff0c;就被它的显存占用惊到了。我的RTX 3090显卡24GB显存几乎被占满&#xff0c;长时间运行后显卡温度飙升到85度以…...

Mac mini变身Nas神器:Docker部署小雅Alist全流程(含阿里云盘Token获取避坑指南)

Mac mini 轻量化Nas改造指南&#xff1a;基于Docker的Alist部署与云盘管理实战 在数字化生活日益普及的今天&#xff0c;个人数据存储需求呈现爆发式增长。对于追求高效与简洁的技术爱好者而言&#xff0c;将闲置的Mac mini改造为轻量级Nas系统&#xff0c;不仅能够充分利用硬…...

基于SpringBoot + Vue的眼科患者随访管理系统(角色:患者、医生、管理员)

文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 &#x1f49b;博主介绍&#…...

2024丨时间序列预测(Time Series Prediction)前沿技术解析与论文精要

1. 2024年时间序列预测技术全景图 时间序列预测就像给数据装上"时光望远镜"&#xff0c;让我们能够窥见未来的趋势和变化。从股票价格到天气变化&#xff0c;从设备故障预警到疫情传播预测&#xff0c;这项技术正在深刻改变各行各业的决策方式。2024年&#xff0c;这…...