攻防世界之greeting-150

该博客详细介绍了攻防世界中的greeting-150挑战,主要涉及格式化字符串漏洞的利用。通过覆盖.fini_array,使程序进入循环,从而利用漏洞获取shell。内容包括漏洞原理、目标、环境、工具、步骤和流程,适合初学者学习。

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

题目链接:greeting-150

原理:

格式化字符串漏洞、覆盖 .fini_array

目的:

用格式化字符串漏洞制造程序循环,进而使普通格式化字符串漏洞可以被利用

环境:

ubuntu14 64位

工具:

pwntools

步骤:

用格式化字符串漏洞修改strlen或其他函数(能被调用且有可操纵字符串传入的函数)的got表system地址plt地址,以及 .fini_array4个字节为start地址,进而程序进入第二次循环,输入/bin/sh\x00,拿到shell。

流程:

file greeting-150的文件信息:32位程序

greeting-150: ELF 32-bit LSB  executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=beb85611dbf6f1f3a943cecd99726e5e35065a63, not stripped

checksec greeting-150检查保护:
在这里插入图片描述
用IDA查看程序流程得:
在这里插入图片描述
程序的大致流程就是向v5读入64字节,读入成功后,将v5的内容输出到s里面,之后将s直接输出,很明显这里有一个格式化字符串漏洞,再根据保护,咱们可以用任意地址写,接下来就是找偏移,构造payload。
由IDA可以看出,s在栈上的地址为esp+1C,而s里面的内容为“Nice to meet you, %s :)\n”,其中的%sv5的内容,即我们输入的内容。所以&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值