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

BUUCTF PWN wp--jarvisoj_level0

第一步    checksec ,该题为64位。

分析一下二进制保护机制:

  1. Arch: amd64-64-little
    这个字段表示二进制程序的架构是 64 位的小端序的 x86-64 架构。小端序意味着低位字节存储在内存中的低地址上,高位字节存储在高地址上。
  2. RELRO: No RELRO
    RELRO(Relocation Read-Only)是一个防止某些基于重定位表的攻击的安全机制。你提供的信息表明,程序没有启用 RELRO。这意味着程序的重定位表在运行时是可写的,攻击者可以利用这种特性进行某些类型的攻击,如通过覆盖 GOT 表来进行函数重定向。
  3. Stack: No canary found
    堆栈保护(Stack Canary)是一种用于防止缓冲区溢出攻击的机制,它通过在栈帧中放置一个“金丝雀值”(Canary)来检测溢出。这里显示没有找到 Stack Canary,这意味着程序没有启用堆栈保护机制,可能更容易受到栈缓冲区溢出攻击的威胁。
  4. NX: NX enabled
    NX(No eXecute)是指禁止执行位于栈或堆等非代码段中的代码的机制。这里显示 NX 已启用,这意味着程序不允许在数据段中执行代码,这可以有效防止某些代码注入类型的攻击(如传统的栈溢出攻击)。
  5. PIE: No PIE (0x400000)
    PIE(Position Independent Executable)是指位置无关的可执行文件,如果启用了 PIE,程序在每次运行时,加载地址都会随机化,以增加攻击者预测内存布局的难度。这里显示未启用 PIE,这意味着程序的加载地址是固定的(这里是 0x400000),攻击者更容易预测程序的内存布局,从而进行攻击。

第二步   进入主函数,并分析。

跟进该函数,进入该数组(buf[128])

计算栈溢出长度用垃圾数据填充一下(从buf到vulnerable_function的返回地址只有0x80+0x8个字节。本题与之前的题目类型差不多,是栈溢出问题)

调出strings窗口发现/bin/sh,system("/bin/sh")在callsystem函数里,想办法触发该函数即在p64下控制该函数的地址,如下为0x400596

第三步    编写脚本

说明一下(0x80+0x8可以写成136,有别人直接这么写,正好对应上面buf数组128个+r里面8

个)

第四步   运行 


http://www.kler.cn/news/284744.html

相关文章:

  • 入行「游戏策划」,该从何处下手?
  • 【FPGA】入门学习路线
  • 【QNX+Android虚拟化方案】114 - QNX /dev/switch 节点创建 及 读写功能实现实例
  • 3d网格补洞算法
  • 实测数据处理(RD算法处理)——SAR成像算法系列(十)
  • Python编码系列—Python中的安全密码存储与验证:实战指南
  • 每日一题,零基础入门FPGA——逻辑门
  • NFC射频--天线设计
  • 集成电路学习:什么是BIOS基本输入/输出系统
  • pytorch 均方误差损失函数
  • C_08_动态内存申请
  • 未来城市生活:科技与人文的交响
  • Docker 实战加速器(紧急情况!镜像库全面失效,一招解决Docker无法下载)
  • 云轴科技ZStack产品升级,浙江分公司产品发布会成功举办
  • tailwindcss
  • 《黑神话:悟空》:30%抽成真相
  • 如何使用 AWS CLI 为私有 AWS S3 存储桶中的对象创建预签名 URL
  • 2016年系统架构师案例分析试题五
  • 前端面试——八股文
  • 又一个免费代码生成工具
  • C++ TinyWebServer项目总结(11. 定时器)
  • 【C++】OJ习题 篇2
  • Spring 是什么
  • AD19基础应用技巧:捕捉对象功能的讲解鼠标”绿色十字”大光标、小光标切换
  • Java基础(6)- Java代码笔记3
  • 宠物空气净化器有用吗?为什么养宠家庭要买宠物空气净化器?
  • Java Email发送:如何配置SMTP服务器发信?
  • 精选算法编程题
  • redis的共享session应用
  • 数据备份-linux之间同步目录和文件