栈溢出
background
实验步骤
首先先来看源代码,可以看到会把输入进来的一串字符串给到buf
,所以我们需要做的就是,让这个字符串包含shellcode
,除此之外,实际上要得到的是shellcode
的起始位置,然后将存储着main
的return address
的位置进行覆盖,实现跳转到shellcode
起始位置,同时,由于NOP
指令的存在(),并不需要获取准确的位置
之后,需要来看一下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"
可以看到长度为45,然后我们需要开始构造输入的字符串,注意,要保证NOP
指令数量加上shellcode
的长度是4字节倍数,否则return address
对不齐
另外通过程序输出来找到buf的起始位置,可以看到起始位置是ffffd11c
输入下面指令并运行,获得root权限
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!