找回密码
 立即注册
Qt开源社区 门户 查看内容

Linux栈溢出入门实战篇(一)

2019-8-19 17:11| 发布者: admin| 查看: 838| 评论: 0

摘要: 更多全球网络安全资讯尽在邑安全www.eansec.com前言大家好,上一篇文章小弟发表/解了一个简单的pwn,剩下的2个level也已经有小伙伴帮忙解题了,感觉大家好像都挺喜欢该类型的。这次小弟打算开始写一个新的系列文章, ...

更多全球网络安全资讯尽在邑安全

www.eansec.com




前言


大家好,上一篇文章小弟发表/解了一个简单的pwn,剩下的2个level也已经有小伙伴帮忙解题了,感觉大家好像都挺喜欢该类型的。这次小弟打算开始写一个新的系列文章,如果写的不好,或者有什么意见、建议欢迎各位大佬点评。本篇文章为入门篇故仅提供了8个level的栈溢出练习实验,均未开启任何保护的。后面的文章会进一步升级。

下载、实验环境


实验代码下载:https://pan.baidu.com/s/16bpbJoI5qdWctH3n6owqnw
实验环境:ubuntu 4.15
辅助插件:Peda 下载地址:https://github.com/longld/peda



开始实验


本次实验环境分别为 level0-level7 均提供了源码和编译好的程序

level0


我们先查看一下c源码:



通过源码可以看出存在明显的栈溢出漏洞,我们先来运行看看,



通过简单的输入12个A和6个6,可以看到我们还是没有成功,



当我们输入70个‘A’时,发现程序弹出 我们已经能成功更改‘modified’变量了。

level1


查看源码:



下面我们运行一个这个程序,当我们不带任何字符时,程序给出



说明我们还在“argc”代码块。

当我们运行并带入20个“A”时,程序给出



说明我们已经来到了“modified”函数出,但是我们还没到溢出点。

当我们运行并带入70个“A”时,程序给出



说明我们已经来到了“modified”函数出,并且我们也已经找到到溢出点。

(此处的0x41414141 为ascii码的 大写“A”)

通过上面简单的调试,我们就知道该怎么做了,如图:





level2


查看源码:



下面我们运行一个这个程序,当我们不带任何字符时,程序给出



请让我们设置 ‘GREENIE’的环境变量,我们搜索一下看看本系统有没有,如图:



可以看到在该系统中并没有设置定义,下面我们就设置一下看看

本次就写了一个python,运行





level3


我们查看一下源码:



下面我们运行一下这个程序看看,



通过输入70个“A”,可以发现程序接收了我们的输入,并成功控制了内存地址指针,但是我们还是在main下的‘fp’函数判断处,通过源代码我们知道有个‘win’函数,我们查看一下



通过 objdump 搜索到了,该函数的地址 “0x08048424”



(这里小伙伴们也可以使用IDA搜索)

下面我们就直接利用了



如图,我们已经成功控制内存地址跳转到win函数并执行。

转自安全客
欢迎收藏并分享朋友圈,让五邑人网络更安全



欢迎扫描关注我们,及时了解最新安全动态、学习最潮流的安全姿势!

推荐文章

1

Django入门之旅-启程

2

重大漏洞预警:ubuntu最新版本存在本地提权漏洞(已有EXP) 

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:邑安全,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了