简单的栈溢出_hello_elf

本文介绍了简单的栈溢出漏洞利用,以_hello_elf为例,涵盖了基本知识、溢出点查找和目标指令定位。通过分析32位ELF文件,展示了如何利用栈溢出获取程序控制权,最终实现远程通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的栈溢出_hello_elf

原文地址:https://hvnt3r.top/2018/09/%E7%AE%80%E5%8D%95%E7%9A%84%E6%A0%88%E6%BA%A2%E5%87%BA-hello-elf/

最近哥们问了我一道PWN题,觉得比较有代表性而且难度较低,就记录下来以作栈溢出的示例,仅从新手角度分析,大牛绕过

题目地址:https://pan.baidu.com/s/1Gd6u_-pRWmPsRJdlnnNYKg

0x00 基本知识

首先,要进行栈溢出的漏洞利用要理解栈的基础结构以及在计算机内的存储方式,之前就有很多大佬写过相关的文章,我也没必要造轮子,就把链接放在这里吧,我是链接,这个是百度百科上比较通用的解答,如果觉得不清楚还可以自己查阅其他的文章

0x01 起手第一步

首先一般我拿到一个二进制文件的时候会先用file命令看一下文件的类型:

☁  1  file hello
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=547379e1b7bd695a7546d2a3321e199c0474dfa9, not stripped

这里显示这是一个32位的ELF文件,其实对于新手来说IDA_Pro的一键f5还是挺方便的,我们先把文件放到IDA里看一下:

IDA的左侧显示了一些函数的信息,双击函数后再按F5键使IDA显示出伪C代码,这里说是伪C代码是因为这些代码严格意义上不算是C代码,只是IDA为了使程序显示更接近我们的逻辑顺序而显示的一种接近于C语言格式的代码,如果可以通过自己的判断来修复一些伪C代码中的逻辑或者变量名称,可以使得代码接近于源代码,但是我们这道题不涉及修复的知识。

随便翻看一下这些函数的内容,并在脑海中大致建立一个程序的逻辑框架,看到一个read函数,不知道此函数的作用怎么办,很简单,Linux下自带命令man可与查看函数的手册

在Linux终端下输入命令:

man read

此时终端会打印出关于read函数的信息:

内容很多,感兴趣的同学可以自己敲一下试试,而我们目前只需关注一下信息:

NAME
       read - read from a file descriptor

SYNOPSIS
       #include <unistd.h>

       ssize_t read(int fd, void *buf<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值