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】Secret File

    知识点 文件包含漏洞 PHP伪协议 进入靶场后 发现是一个文字界面没有任何特点 习惯性的右键查看源代码 发现有一个PHP文件 点击进行访问后 发现有一个链接但是点击链接后没有发现任何东西 此时右键查看原代码也没有发现东西 但是可以肯定的是突
  • Buuctf——[RCTF2015]EasySQL

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

    1 题目 2 解题 2 1 尝试点提交 url变为 http b61f33a4 644b 402a 9da5 4bdf8043f954 node4 buuoj cn inject 1 可知传入的参数名为 inject 参数为1 2 2 尝试
  • BUUCTF Misc杂项前十二道题的思路和感悟

    title BUUCTF Misc date 2021年8月18日 17点27分 tags MISC categories MISC 1 BUUCTF 签到题 直接告诉了flag 2 BUUCTF 第二道题 Stegsolve 下载附件之后
  • buuctf_Exec

    0x01 题目链接 BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台 为各位 CTF 选手提供真实赛题在线复现等服务 https buuoj cn challenges 0x02 题目 打开题目就看到大大的PING 二话不说
  • BUUCTF-Web[ACTF2020 新生赛]Upload

    BUUCTF Web ACTF2020 新生赛 Upload 目录标题 BUUCTF Web ACTF2020 新生赛 Upload 题目 题解 题目 题解 访问靶机 首先我们先进行尝试上传正常带有php木马的文件 点击上传后 给我们弹窗警
  • buuctf- [BJDCTF2020]Easy MD5 (小宇特详解)

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

    BJDCTF2020 EasySearch1 0x01漏洞类型 打开题目如图所示 还是对CTF套路不太熟悉 拿到这种就以为是sql注入 启动sqlmap就一顿操作 都大 了 搞竞赛还来得及吗 参考别人的wp后知道是源码泄露 这里就不给服务器
  • [GXYCTF2019]BabyUpload

    GXYCTF2019 BabyUpload 0x01漏洞类型 文件上传 经过测试 发现存在以下waf 不全 1 jpg不能过大 2 检查内容
  • BUUCTF [FBCTF2019] Products Manager

    BUUCTF FBCTF2019 Products Manager 考点 基于约束的SQL攻击 数据库字符串比较 INSERT截断 启动环境 产品管理 其中有三个功能 查看前5的产品 添加产品 查看产品细节 知道了大致功能 尝试正常的业务逻
  • buuCTF [ISITDTU 2019]EasyPHP 1

    buuCTF ISITDTU 2019 EasyPHP 1 直接代码审计 第一个if 过preg match 一般有三种方法 取反绕过 异或绕过 转义绕过 这里用取反绕过 第二个if的意思是输入的字符串不重复的字符长度不超过0xd即13 如
  • [CISCN2019 华东南赛区]Web11 SSTI

    这道SSTI 差点给我渗透的感觉了 全是API 我还想去访问API看看 发现这里读取了我们的ip 我们抓包看看是如何做到的 没有东西 我们看看还有什么提示 欸 那我们可不可以直接修改参数呢 我们传递看看 发现成功了 是受控的 这里我就开始没
  • BUUCTF base 第三题Upload-Labs-Linux1比较省事的方法

    1 安装蚁剑 首先下载蚁剑 链接 https pan baidu com s 1O6Ty2Qmk7AVuY9QU CD9gQ fm lk0 提取码 1234 其次解压蚁剑 共两个文件需解压 在AntSword Loader中双击运行 gt
  • [MRCTF2020]千层套路

    MRCTF2020 千层套路 题目地址 https buuoj cn challenges MRCTF2020 E5 8D 83 E5 B1 82 E5 A5 97 E8 B7 AF 解压压缩包 发现是密码竟然是压缩包名称 再根据题目 tn
  • BUUCTF【Web】Exec(命令执行漏洞)

    在进入靶场后发现窗口ping 猜测可能是SQL注入 也有可能是命令执行漏洞 我们先随便ping一下本机地址127 0 0 1 发现有回显 PING 127 0 0 1 127 0 0 1 56 data bytes 既然有回显那么就可以确定
  • 强网杯 2019]随便注 【SQL注入】四种解法

    题目简介 题目名称 强网杯 2019 随便注 1 题目平台 BUUCTF 题目类型 Web 考察知识点 SQL注入 解题步骤 方法一 首先启动并访问靶机 有一个输入框 随便输入1 or 1 1 测试一下是否存在sql注入 提交后提示erro
  • BUUCTF [CSAWQual 2019]Web_Unagi 1

    BUUCTF CSAWQual 2019 Web Unagi 1 提示在 flag 有提示了上传xml文件及其格式 直接用之前xml注入的上传即可 改文件名为1 xml上传即可得flag gt
  • [SUCTF 2019]EasyWeb

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

    BUUCTF 极客大挑战 2019 Http 启动环境 主页为三叶草技术小组纳新 查看网页源码 发现隐藏的页面 div class image img src images pic01 jpg alt div div class conte

随机推荐

  • 最详细整理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