首页 > 其他分享 >花式栈溢出 CTFshowpwn88

花式栈溢出 CTFshowpwn88

时间:2024-04-05 17:11:40浏览次数:16  
标签:0x4a CTFshowpwn88 机器码 地址 花式 跳转 我们 溢出

花式栈溢出

在这之前确实对这方面了解很少,一般这种花式栈溢出不仅仅要求你能发现漏洞,最主要的是你要有随机应变的能力

这个题是一个64位的题目看一下保护

canary 和 nx保护都开了,我们用ida打开看一下

那么程序主要是要你给一个地址和一个值,他会把你给的值放入你给的地址里面,然后就没了,看起来只能改一个地址的一个字节的数据,那么怎么办呢而且程序只运行一次,我们肯定需要多次修改地址的值

这里我的思路是程序结尾的时候有一个jnz跳转,既然我们只能写一个字节,那么我们能不能让这个跳转指令跳转到前面的代码继续执任意地址行可读呢,答案是可以的

首先要知道jnz有两段机器码,第一段就代表它本身,第二段代表它要跳转到地址的机器码

我们计算一下到我们想要的地址是多少0x400767 - 0x40071D = 0x4a,那么我们就可以这样来生成对应的机器码u32(asm("jnz $-0x4a")[1:].ljust(4,b'\x00'))

$代表当前地址,后面为什么是[1:]呢?因为我前面说了有两段机器码,第二个是对应地址的,所以我们取[1:] 而不是 [0:1],这样我们就可以跳转到前面的地址了

可以看见又执行了一次,那么为了保险起见我们把第一个机器码改成jmp,万一它那一次突然跳转另一个地方了呢?哈哈,不过后来我实验了一下不改也是可以的,这里我们

还是进行修改,u32(asm("jmp $-0x4a")[0:1].ljust(4,b'\x00')),这里取第一机器码

那么接下来我们只需要修改栈上的数据为我们的shellcod然后再跳转到我们输入的shellcode就好啦,不过要注意偏移,exp如下

标签:0x4a,CTFshowpwn88,机器码,地址,花式,跳转,我们,溢出
From: https://www.cnblogs.com/CH13hh/p/18115924

相关文章

  • 【深度解析】计算机组成原理:8位二进制数的原码、反码与补码表示及溢出处理实例
    #自用笔记引言在计算机系统中,数值的内部表示是其基础组成原理的核心部分。尤其对于有符号整数而言,原码、反码和补码的运用极大地简化了运算过程,并有效地解决了负数表示问题。本文将深入探讨8位二进制数下这三种编码方式的规则,同时通过具体示例分析溢出现象及其解决办法。一......
  • C/C++整形变量溢出问题
    参考C语言的整型溢出问题|酷壳-CoolShell   概述整形溢出分为无符号(unsigned)整型溢出和有符号(signed)整型溢出无符号整型溢出对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”比如,两个unsignedint类型求和溢出......
  • c++栈内存溢出问题
    问题说明实验课测量快排时间时,用intar[MAXSIZE+1];来创建数组,数据规模从1000-10000,而MAXSIZE的设置不能超过600000,超过了程序就无法运行直接中断,理论上这是不应该。程序中用rand()生成随机数据,但若对数据求模rand()%100,则程序运行到中途会异常中断。问题原因intar[M......
  • 编写并调试一个堆栈溢出的程序
    编写并调试一个堆栈溢出的程序编写存在栈溢出漏洞的c++程序:stack_overflow.cpp#include<iostream>usingnamespacestd;voidhello(){charname[8];scanf("%s",name);printf("hello,%s!\n",name);}voidstack_overflow(){printf("Aha,su......
  • 什么是栈溢出
    什么是栈溢出?介绍了解栈溢出,首先要了解什么是栈。栈是一种典型的先进后出(FirstinLastOut)的数据结构,其操作主要有压栈(push)与出栈(pop)两种操作。进栈(PUSH):将一个数据放入栈里叫进栈(PUSH),相当于在扑克牌的在最上面放了一张新的扑克牌。出栈(POP):将一个数据从栈里取出叫......
  • windows server2012安装百度云网盘导致内存溢出
    步骤首先需要下载软件shexview,一款免费的软件,用于查看Windows资源管理器安装的插件。下载地址https://www.nirsoft.net/utils/shexview-x64.zip下载后解压运行shexview.exe: 打开能看到Windows资源管理器安装的插件,可以看到我已经将所有百度网盘的插件全部禁用掉了。 ......
  • 权限提升-Windows权限提升篇&溢出漏洞&宝塔面板Bypass&CS插件化&MSF模块化
    知识点1、Web到Win系统提权-权限差异原因2、Web到Win系统提权-溢出漏洞(MSF&CS)3、Web到Win系统提权-集成软件(哥斯拉模块Bypass)章节点:1、Web权限提升及转移2、系统权限提升及转移3、宿主权限提升及转移4、域控权限提升及转移基础点0、为什么我们要学习权限提升转移......
  • 每日面经分享03.22(垃圾回收、内存溢出)
    1.什么是垃圾回收机制a.垃圾回收是一种自动内存管理机制,用于在程序运行时自动释放不再使用的内存空间。b.作用减少内存泄漏和提高程序的性能。2.Python中垃圾回收机制方法a.gc模块:Python提供了gc(GarbageCollector)模块,用于控制和调整垃圾回收机制的行为。通过该模......
  • vue3+element plus 判断文字是否溢出,溢出显示el-tooltip
    用到elementplus表格,:show-overflow-tooltip="true"属性在 "element-plus":"2.2.27",版本不支持修改el-tooltip文本的样式: 满足2点需求:①文字只有一行不显示悬浮框;②超出一行显示省略号,鼠标有悬浮框,且保留文本的换行效果。关键代码:<el-table-columnlabel="建议内容......
  • CVE-2023-48409 Mali GPU 整数溢出导致堆越界写
    CVE-2023-48409MaliGPU整数溢出导致堆越界写https://github.com/0x36/Pixel_GPU_Exploit漏洞原语:假设分配的大小为0x3004​,会执行copy_from_user(ptr-0x4000,from,0x7004),导致越界写由于CONFIG_HARDENED_USERCOPY如果to是slab中的地址,copy_from_user会确保拷......