栈溢出

background

1

实验步骤

首先先来看源代码,可以看到会把输入进来的一串字符串给到buf,所以我们需要做的就是,让这个字符串包含shellcode,除此之外,实际上要得到的是shellcode的起始位置,然后将存储着mainreturn address的位置进行覆盖,实现跳转到shellcode起始位置,同时,由于NOP指令的存在(),并不需要获取准确的位置

3

2

之后,需要来看一下shellcode的长度

"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff/bin/sh"

4

可以看到长度为45,然后我们需要开始构造输入的字符串,注意,要保证NOP指令数量加上shellcode的长度是4字节倍数,否则return address对不齐

另外通过程序输出来找到buf的起始位置,可以看到起始位置是ffffd11c

5

输入下面指令并运行,获得root权限

6


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

安全攻防综合实验六 上一篇
安全攻防综合实验4 下一篇