buuctf simplerev 中的小头位序

2023-05-16

(33条消息) BUUCTF SimpleRev(涉及大小端序存储的问题)_Ireb9z的博客-CSDN博客_buuctfsimplerevicon-default.png?t=M85Bhttps://blog.csdn.net/afanzcf/article/details/118788007详细的wp这个大佬已经写了,但是对小头(端)位序的讲解可能还不够清楚,为什么wodah反向拼接?

我代表师傅来从0开始解释一下这里的小端位序,鸣谢师傅@chneft

 一、其实人和计算机都是从高往低读。

人都是从左往右读,因为高位在左侧。比如100,1在百位上,是最高的位,所以读成100.

计算机也是从高位往低位读,但是对于计算机来说,地址的高位在右侧,所以计算机从右往左读。

二、先定义一个变量,来看看大头和小头的区别。

int v9=512969957736=0x776F646168LL;

地址是:0000h,地址排列如下图所示,是小头位序。

 

 

可能不够清晰,所以我们拿1来作例子,展示小头位序的存储步骤:

 int=1。

4个字节(32位系统)这种变量在写入地址的时候。

(1)先占据四个字节的位置

(2)把1写成16进制的形式 00 00 00 01。01是最低的字节。

(3)小头位序,低字节存放在低地址,高字节存放在高地址。

         大头位序,低字节存放在高地址,高字节存放在低地址。

小头位序存放的1,存放在0000h的位置。

大头位序存放的1,存放在0010h的位置。看出来小头位序和大头位序的区别

 

三、定义一个数组。

知识点:数组的元素是按照数组元素序号从小到大在内存中排列的。

char c[4]={0x01,0x34,0x6f,0x20}  地址位置在0040h。

 

 低地址存放在低字节对吧?小头位序,从高往低读取,01,34,6f,20

我们去查看它的地址

可以看到上图中,01反而成了低地址!说明我们写入的顺序错了。应该是下图0040h这样

        

可是这样不就变成从低地址往高地址读了吗?所以就要引出一个知识点:

数组的元素是按照数组元素序号从小到大在内存中排列的。

而读取时也是从低地址向高地址的方向读取。现在懂为什么是反着读取wodah了吧?

四、回到题目中 

涉及到小头位序的一共分成四个部分,key3,v9,key,src。

 

 key3在读取的时候,由于是db,define byte在内存中也是从低到高,展示一下。

db是汇编语言,我们在汇编中看一下它。

assume cs:code , ds:data, ss:stack

data segment
     db 'a','b'
     db 'ab'
data ends

stack segment
     dw  0,0,0,0,0,0,0,0
stack ends

code segment

start: mov ax,stack
       mov ss,ax
    mov sp,16
    mov ax,data
    mov ds,ax
    push ds:[0]
    push ds:[2]
    pop ds:[2]
    pop ds:[0]
    
    mov ax,4c00h
    int 21h
code ends
end start

看到'a','b'和'ab'在内存中的排列相同,都是61,62,是从低到高

 join函数内的两个参数在调用时都必须是数组的形式,而数组在读取时也是从低到高。

所以读取key3时,是正常的kills。


之后我们再来看v9。

一开始是这个样子,v9 = 512969957736LL;

LL代表longlong,是强制类型转换。

鼠标放上去按R,变成v9 = 'wodah';

鼠标放上去按H变成十六进制 v9 = 0x776F646168LL;

开始时v9被ida识别为int64。在winhex中查看它,是小头位序没错。

 

join函数内的两个参数在调用时都必须是数组的形式,而数组在读取时是从低到高。

所以v9在读取时是按照0x6861646F77来读取,就变成了wodah,和key3结合后变成了

killshadow


下方strcat,key1同key3一样db。

 而src则是字符数组,读取方式也知道了是"NDCLS",则key是"ADSFKNDCLS"

 

结束啦!撒花撒花✿✿ヽ(°▽°)ノ✿

md,逆向好难

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

buuctf simplerev 中的小头位序 的相关文章

  • BUUCTF WEB 极客大挑战 2019 LoveSQL

    题目 解题 1 输入万能密码 用户名 admin or 1 1 密 码 1 2 确定回显列 用户名 1 union select 1 2 3 select 1 2 逐步增加 直到不报错即得到正确的列数 密 码 1 说明查询列数为3 回显列为
  • BUUCTF WEB [极客大挑战 2019]Knife

    BUUCTF WEB 极客大挑战 2019 Knife 根据提示直接使用蚁剑连接 在文件根目录中找到flag文件 获得flag flag b297ceda a835 48bb acf9 2a6c03f68d32
  • Buuctf——[RCTF2015]EasySQL

    Buuctf RCTF2015 EasySQL 一 解题步骤 1 看到注册登录 闲着没事先注册个号试试 1 123 2 进去看了 除了受到文化熏陶 别的好像没有啥 点一下试试其有什么功能 一不小心就看到了修改密码 3 惊奇的发现 密码可以被
  • ctf-ping命令执行

    GXYCTF2019 Ping Ping Ping 现在做一下关于常见的绕过ping执行其他命令的姿势 启动环境 连接并输入参数 查看当前目录下都有什么 ls命令没有被过滤 并且知道flag就在这个目录下面 用cat查看的flag的时候发现
  • BUUCTF [ACTF2020 新生赛] Exec

    BUUCTF ACTF2020 新生赛 Exec 启动靶机 打开环境 页面可以执行Ping命令 判断应为命令执行漏洞 尝试输入正常IP127 0 0 1查看其回显 127 0 0 1 其为正常回显 测试管道连接符 是否能用 127 0 0
  • BUUCTF WEB 强网杯 2019 随便注

    1 题目 2 解题 2 1 尝试点提交 url变为 http b61f33a4 644b 402a 9da5 4bdf8043f954 node4 buuoj cn inject 1 可知传入的参数名为 inject 参数为1 2 2 尝试
  • BUUCTF 之 [ACTF2020 新生赛]Exec(命令执行漏洞)

    BUUCTF 之 ACTF2020 新生赛 Exec 命令执行漏洞 相关 观察 进攻 相关 项目 内容 难度 简单 类型 WEB 靶场 BUUCTF 坐标 Exec 观察 这界面和这网页标题结合起来 相信给位都能猜到这个靶场中很有可能存在命
  • [HFCTF2020]EasyLogin

    HFCTF2020 EasyLogin 继续刷题 打开环境 发现是一个登录页面 F12一下 发现有一个js可以看看看到了js代码 但是用处似乎不大 它提示用的是koa框架 了解一下koa目录的基本结构 我们访问 controllers ap
  • buuctf_Exec

    0x01 题目链接 BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台 为各位 CTF 选手提供真实赛题在线复现等服务 https buuoj cn challenges 0x02 题目 打开题目就看到大大的PING 二话不说
  • buuctf- [BJDCTF2020]Easy MD5 (小宇特详解)

    buuctf BJDCTF2020 Easy MD5 小宇特详解 这里显示查询 这里没有回显 f12一下查看有没有有用的信息 我使用的火狐浏览器在网模块中找到了响应头 Hint select from admin where passwor
  • [HFCTF2020]EasyLogin

    知识点 jwt伪造 jwt 全称 Json Web Token 是一种令牌格式 可以用来区分各个用户 形式是下面这样 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJzZWNyZXRpZCI6MSwidXNl
  • WEB_HCTF_2018_WarmUp

    Categories web 代码审计 write up source code get source code http eb22847d 9f8a 4ecf b972 5ecebfcf5faf node3 buuoj cn source
  • BUUCTF做题Upload-Labs记录pass-01~pass-10

    BUUCTF做题Upload Labs记录pass 01 pass 10 pass 01 前端验证后缀 传1 png 抓包改1 php 即可 蚁剑连 http your ip upload 1 php pass 02 验证content t
  • [HarekazeCTF2019]encode_and_encode

    HarekazeCTF2019 encode and encode 打开环境 得到源码
  • buuCTF [ISITDTU 2019]EasyPHP 1

    buuCTF ISITDTU 2019 EasyPHP 1 直接代码审计 第一个if 过preg match 一般有三种方法 取反绕过 异或绕过 转义绕过 这里用取反绕过 第二个if的意思是输入的字符串不重复的字符长度不超过0xd即13 如
  • buuctf [强网杯 2019]随便注 1

    buuctf web 强网杯 2019 随便注 1 刷题个人日记 小白一个 写给自己看 打开后是这样 从题目和内容来看就是一道sql注入题 输入 1 or 1 1 这个 用来注释掉后面的sql语句 显示所有数据 这个数据有什么用我也不知道
  • CTF MISC解题思路BUUCTF MISC1-8刷题

    1 签题 扫描二维码到得flag 2 金 胖 题目为gif动画 用wps打开每帧保存成图片 flag就在其中几张图片 3 二维码 下载题目解压得到一个二维码图片 扫描没发现flag 使用010editor打开图片发现文件头为89 50 4E
  • [MRCTF2020]千层套路

    MRCTF2020 千层套路 题目地址 https buuoj cn challenges MRCTF2020 E5 8D 83 E5 B1 82 E5 A5 97 E8 B7 AF 解压压缩包 发现是密码竟然是压缩包名称 再根据题目 tn
  • BUUCTF--[第二章 web进阶]死亡ping命令

    BUUCTF 第二章 web进阶 死亡ping命令 本文只是对官方wp进行了一点修改 因为在测试过程中发现8080端口弹不回flag 在本地测试也是一样的结果 但是把端口修改成8089 其他端口应该也可以 并且nc监听方式为 nc lvp
  • [SUCTF 2019]EasyWeb

    SUCTF 2019 EasyWeb 打开环境是一段代码 其中if preg match x00 0 9A Za z x7F i hhh 这个判断是难点 它的绕过可以参考这篇文章https www h3399 cn 201909 72364

随机推荐

  • 最详细整理STL之vector基础

    前言 xff1a Vector是一种可以存储任意类型的动态数组 xff0c 属于序列式容器 xff0c 可以用sort对其进行排序 xff0c 底层数据结构是数组 xff0c 可以随机访问元素 Vectors 包含着一系列连续存储的元素 其
  • STL之vector扩容机制

    前言 大家好 xff0c 我是萝卜 上期结尾说到vector的push back操作一般情况下时间复杂度为O 1 xff0c 是否存在特殊情况 那么本期就讲讲vector在容器空间不足时进行push back操作会发生什么 vector作为
  • 求职嵌入式软件开发linux kernel/BSP leader/工程师职位

    个人工作说明 xff1a 目前从事linux系统网络设备的开发工作 xff0c 负责bootloader linux kernel文件系统 xff0c driver移植 xff0c 以及开源app移植 主要技能和过去的经验 xff1a 1
  • 【2023最新】计算机网络面试题【收藏持续更新】

    你好 xff0c 我是萝卜 xff0c 我会在本篇文章持续更新关于计算机网络的面试题 最新内容更新日期 xff1a 2023 04 11 基础 说一下计算机网络体系结构 网络体系结构一般有三种 xff1a ISO七层模型 xff0c TCP
  • UDP协议详解

    概述 xff1a UDP只在IP的数据报服务之上增加了两个最基本的服务 xff1a 复用和分用以及差错检测 UDP不保证可靠交付 xff0c 但是不意味着应用对数据的要求是不可靠的 xff0c 只是所有维护可靠性的工作可由用户在应用层完成
  • TCP传输可靠性保证机制之重传机制

    TCP重传机制 tcp重传机制包括超时重传 快速重传 带选择确认的重传 SACK 重复SACK 四种 超时重传 xff1a 超时重传是tcp协议保证数据可靠性的一个重要机制 原理是在发送某一个数据以后开启一个计时器 xff0c 在一定时间内
  • VSCode:终端控制台常用指令

    常用的指令 以下是一些在 Visual Studio Code 终端控制台中常用的指令 xff1a 1 清除终端 xff1a clear 2 列出当前目录中的文件和文件夹 xff1a ls 3 切换到指定目录 xff1a xff1a cd
  • Ubuntu18.04安装ROS时rosdep update报错解决办法

    在安装ros进行rosdep update时经常会报错 xff0c 有时候可以通过换网解决 xff0c 但从我安装那么多次的经验来看 xff0c 仅有一次换手机热点后更新成功了 xff0c 其他都是失败 xff0c 成功率太低 从网上搜到了
  • 【STM32】STM32F103C8T6串口通信,实现3个串口收发数据

    串口通信 xff08 Serial Communications xff09 实现单片机与电脑或者其它外设进行通信 xff0c 通信时只需两根线 xff08 TX xff0c RX xff09 就可以实现数据传输 STM32f103有三个串
  • C语言学习笔记——(2)数组

    数组 1 什么是是数组2 数组的定义2 1数组的表达2 2数组的含义2 3数组的大小 xff1a 3 字符数组4 字符串操作5 二维数组 1 什么是是数组 数组是指有序的元素序列 如果将有限个类型相同的变量的集合命名 xff0c 那么这个名
  • 多线程编程实验

    xff08 一 xff09 查看下列程序并运行 xff0c 掌握如何通过扩展Thread类创建线程 span class token keyword package span span class token namespace case1
  • 实验一:基于Ubuntu系统实现无人机自主飞行

    ps xff1a 为避免出现错误 xff0c 在进行新的一步时 xff0c 需要关闭由于上一步操作打开的终端 xff0c 并开启一个新的终端 例如 xff1a 在开始第5步 安装MAVROS 之前 xff0c 关闭由于第3步 安装ROS 打
  • 5000字学习C语言错误处理的四种方式。

    C错误处理 在C语言中 xff0c 错误处理是一个非常重要的主题 通常情况下 xff0c 程序员需要在代码中处理错误 xff0c 以保证程序能够在出现错误时正确地处理这些情况 C语言中常见的错误类型包括 xff1a 语法错误 逻辑错误 运行
  • yum 源制作

    YUM介绍 YUM主要用于自动升级 安装 移除 rpm 软件包 xff0c 它能自动查找并解决 rpm 包之间的依赖关系 xff0c 要成功的使用 YUM 工具更新系统和软件 xff0c 需要有一个包含各种 rpm 软件包的 reposit
  • MATLAB021b与VS2022混编

    MATLAB2021b与VS2022混编 前言 目前在做一个大创项目 xff0c 其中用到关于Matlab与C的混合编程 xff0c 特此记录 Matlab2021b 如图所示 xff0c 红线划出的是即将使用的 c函数 xff0c 在左侧
  • 香橙派5使用NPU加速yolov5的实时视频推理(一)

    前言 xff1a 寒假里 xff0c 博主完成了树莓派4B搭载yolofastest V2的ncnn加速 xff0c 效果挺不错的 xff0c 但总感觉还是稍微差点意思 xff0c 于是就购买了一块香橙派5 xff0c 想要用RK3588芯
  • 香橙派5使用NPU加速yolov5的实时视频推理(二)

    三 将best onnx转为RKNN格式 这一步就需要我们进入到Ubuntu20 04系统中了 xff0c 我的Ubuntu系统中已经下载好了anaconda xff0c 使用anaconda的好处就是可以方便的安装一些库 xff0c 而且
  • 【STM32学习】——串口通信协议&STM32-USART外设&数据帧/输入数据策略/波特率发生器&串口发送/接受实操

    文章目录 前言一 串口通信1 通信接口2 串口通信 xff08 1 xff09 串口简介 xff08 2 xff09 串口硬件电路 xff08 3 xff09 串口软件部分 二 STM32的USART外设1 USART简介2 图示详解 三
  • 【STM32学习】——USART串口数据包&HEX/文本数据包&收发流程&串口收发HEX/文本数据包实操

    文章目录 前言一 数据包格式 xff08 江科大规定 xff09 1 HEX数据包2 文本数据包3 两者对比 二 数据包收发流程1 HEX数据包接收 xff08 只演示固定包长 xff09 2 文本数据包接收 xff08 只演示可变包长 x
  • buuctf simplerev 中的小头位序

    33条消息 BUUCTF SimpleRev xff08 涉及大小端序存储的问题 xff09 Ireb9z的博客 CSDN博客 buuctfsimplerev https blog csdn net afanzcf article deta