首页 > 其他分享 >PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]

PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]

时间:2024-11-07 20:43:15浏览次数:1  
标签:函数 ESP level0 堆栈 地址 内存 小白超 PWN 溢出

题目来源:Jarvis OJ https://www.jarvisoj.com/challenges

题目名称:Level0

题目介绍:

属于栈溢出中的ret2text 意思是Return to text 当程序中有可利用的危险函数 控制程序的返回地址到原本的函数 实现溢出利用

 

基础过程(看个人习惯):

运行程序 查看程序流程

file 查看文件内存类型

checksec 查看文件保护机制

ida 反编译程序

分析可疑漏洞点 确定攻击思路 编写poc

查看程序运行流程

​​​编辑​

file 查看文件内存类型

不同的系统,内存的构造不同,堆栈相关的寄存器操作主要是EBP和ESP寄存器,比作指针来说,ESP寄存器总是指向堆栈的栈顶,当执行PUSH命令向堆栈压入数据的时候,ESP减4,然后把数据拷贝到ESP指向的位置,执行POP命令的时候,首先把ESP指向的数据拷贝到内存/寄存器中,然后ESP+4,而堆栈在内存中的地址从高向低扩展,因此参数或者局部的变量总是通过EBP加减一定的偏移地址来访问的。

32位 4偏移量

64位 8偏移量

栈溢出漏洞,通常需要确定填充长度,计算要操作的地址和覆盖地址的距离,栈基和栈顶的位置,通过上述的偏移量计算获得,根据现实情况去覆盖特定的变量或者地址内容。

得知是64位文件


查看文件保护机制


NX堆栈禁止执行

PIE位置无关可执行文件

Canary堆栈溢出哨兵

Symbol符号

RELRO(got写保护)全局偏移表动态解析函数 地址随机化

只开启了一个NX,没有开启Stack Canary,这个功能在函数执行前先在函数调用位置插入cookie标记,当函数返回调用的时候验证cookie信息是否合法,不合法就停止程序运行,但是如果溢出中,也覆盖了cookie,就会绕过。PIE意为地址无关的可执行文件,每次加载程序的时候都变换text、 data、bss 等段的加载基地址,使得攻击者难以定位相应的基地址执行溢出。

扔到ida看一下 直接进入min函数反汇编 发现会打印helloword后返回了一个函数

​编辑

查看这个函数 rbp-80h //该字符串距离ebp的长度为 0x80h

ebp

基址指针寄存器 指向系统栈最上面一个栈帧的底部(堆栈寻址)

主要作用是保存恢复堆栈 以便于传递参数给函数

read函数没有做过滤,会读取其中的内容直到回车。


该文件是64位的 距离ebp的长度为0x80 距离esp那就有0x8b

64位的情况下为8byte

pop ebp;出栈 栈扩大4byte

push ebp;出栈,栈减少4byte

 

那么相应的栈结构为(图是网上偷的)


发现这里有一个callsystem 内置系统函数system('/bin/sh')执行系统命令


地址0x400684 加上这个地址覆盖为我们想要返回读取的地址

 


payload = 'a'*0x80 + 'b'*8 + p64(0x400596)

此时的栈结构是


在把这一串字符串发送到程序内 计算机的内存中每个值都是按照字节存储的  一般情况下都是小端存储

什么是小端存储:

 在小端存储模式下 数据的最低有效字节会被存储在数据的最低地址处,最高有效字节反之。

既0x0804843B 在内存中的形式是 \x3b\x84\x04\x08

使用pwntools把字节作为字符传递进去,也就是把字符串转换为二进制。

from pwn import *
import pwn

r = pwn.remote('pwn2.jarvisoj.com', 9881)

#         buf        rbp     callsystem
payload = 'a'*0x80 + 'b'*8 + p64(0x400596)

r.sendline(payload)
r.interactive()

​​

以上内容纯小白学习过程 如有错误请不吝赐教

 

标签:函数,ESP,level0,堆栈,地址,内存,小白超,PWN,溢出
From: https://www.cnblogs.com/centos08/p/18533942

相关文章

  • 【二进制安全】PWN基础入门大全(非常详细),零基础入门到精通,看这一篇就够了
    文章目录一、什么是PWN二、常见PWN漏洞三、PWN环境搭建四、PWN基础讲解1.Linux内存布局2.经典栈溢出2.1.栈说明2.2.栈溢出原理2.3.简单栈溢出利用3.常见ROP栈溢出利用3.1.ret2shellcode3.2.ret2syscall3.3.ret2libc==零基础入门黑客/网络安全==【----帮助网......
  • 第八届御网杯线下赛Pwn方向题解
    由于最近比赛有点多,而且赶上招新,导致原本应该及时总结的比赛搁置了,总结来说还是得多练,因为时间很短像这种线下赛,一般只有几个小时,所以思路一定要清晰,我还是经验太少了,导致比赛力不从心,先鸽了~Skillchecksec检查保护(没有开PIE和Canary)ida逆向分析一下不同的选项对应不......
  • 2024御网线上Pwn方向题解
    ASMChecksec检查保护基本上保护都关闭了64位ida逆向程序只有一段,并且返回地址就是输入的数据,看起来就是srop了,找一下可以用的gadget通过异或清空rax值,然后通过异或ecx和1,异或rax和rcx即可增加rax的值,同理左移一位同样可以增加rax的值,将rax增加到0xf然后打srop,程序还给出了......
  • 第八届御网杯线下赛Pwn方向题解
    由于最近比赛有点多,而且赶上招新,导致原本应该及时总结的比赛搁置了,总结来说还是得多练,因为时间很短像这种线下赛,一般只有几个小时,所以思路一定要清晰,我还是经验太少了,导致比赛力不从心,先鸽了~Skillchecksec检查保护(没有开PIE和Canary)ida逆向分析一下不同的选项对应不同的功......
  • CTF-PWN: 虚表(vtable)
    vtablevtable(虚表,virtualtable)是面向对象编程中的一个关键概念,主要用于实现多态性(polymorphism)。它是一种数据结构,通常是一个指针数组,包含了类的虚函数(virtualfunctions)的地址。每个类都有自己的vtable,并且每个对象实例都有一个指向该vtable的指针,称为vptr(虚表指针)。......
  • 2024年网鼎杯青龙组 pwn
    pwn2开局泄露栈地址,又是栈溢出,直接栈转移拿下frompwnimport*fromLibcSearcherimportLibcSearcher#fromCrypto.Util.numberimportbytes_to_long,bytes_to_long#--------------------settingcontext---------------------context.clear(arch='amd64',os='linux&#......
  • pwn入门体验
    pwn真的最初让人敬而远之,但现在发现一些刚入门的题目稍微学一下还是能做的,起码了解pwn的答题模式。。。本篇讲一讲我入门遇到的一些困难和我的解决方案,以供借鉴。首先是配环境,配环境一定一定要跟着视频教程走,而且是pwn方向的最新的教程。我最初自己装ubuntu,调这个调那个装了两......
  • 2024强网杯pwn short wp
    这时2024强网杯的pwn部分的short的WP分析以下程序的基本安全措施*]'/home/ysly/solve/tmp/short'Arch:i386-32-littleRELRO:PartialRELROStack:NocanaryfoundNX:NXenabledPIE:NoPIE(0x8048000)Stripp......
  • BUUCTF pwn学习日记
    我是纯新手,零基础的开始学Pwn喽时间:2024年10月29日BUUCTFPwn学习日记1.test_your_nc下载附件,用IDA打开发现直接nc就可以获得flagcatflag得到flag{07c0b69c-dcbf-4991-8cc6-05660b1a2dd2}2.ripIDA打开发现没有看见有用信息,Shift+F12发现了/bin/sh初步怀疑是栈溢......
  • 2024版最新148款CTF工具整理大全(附下载安装包)含基础环境、Web 安全、加密解密、密码爆
    经常会有大学生粉丝朋友私信大白,想通过打CTF比赛镀金,作为进入一线互联网大厂的门票。但是在CTF做题很多的时候都会用到工具,所以在全网苦寻CTF比赛工具安装包!目录:一、基础环境二、常用工具三、Web安全四、加密解密六、文件工具七、隐写图片八、隐写音频九、隐写......