- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
危险的函数 strcpy\wcscpy\lstrcpy\_tcscpy\_mbscpy strcat\wcscat\lstrcat\_tcscat\_mbscat strncpy…… memcpy…… printf\sprintf…… gets scanf 莫里斯蠕虫-病毒简介 ? ? ? ? 它的编写者是美国康乃尔大学一年级研究生罗特·莫里斯。这个程序只有99行,利用了Unix系统中的缺点,用Finger命令查联机用户名单,然后破译用户口令,用Mail系统复制、传播本身的源程序,再编译生成代码。最初的网络蠕虫设计目的是当网络空闲时,程序就在计算机间“游荡”而不带来任何损害。当有机器负荷过重时,该程序可以从空闲计算机“借取资源”而达到网络的负载平衡。而莫里斯蠕虫不是“借取资源”,而是“耗尽所有资源”。 * 仅仅单个的缓冲区溢出并不是问题的根本所在,但如果溢出返回到能够以root权限运行命令的区域,一旦运行这些命令,那就等于把机器拱手相让了 * Char 8b Short 16b Int 16b Long 32b * suid/guid程序 当一个程序的用户或组被置位的时候,即4000或2000时,可实现某些特殊的功能。一般来说, 一个运行中的程序为运行这个程序的用户所拥有,但如果该程序是suid/guid程序,则运行 的程序则为文件所有者拥有,运行中的程序在程序运行期间拥有文件所有者的全部权限 * windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump数据。 * 堆栈指针寄存器(ESP)、基地址寄存器(EBP)和指令指针(EIP)。EIP(32位指令指针)是下一条指令在代码段(CS:指令或代码存放的位置)里的偏移,一般代码是不能直接访问EIP值的。在每条指令被执行之后EIP值会自动增加一个值以指向下一条要执行指令的地址。当要调用子程序时,系统就需要知道下一条指令的地址以及如何返回原始调用地址。调用指令通常规定了要往EIP所加的值,并把它压入堆栈。而调用函数中的返回指令会把堆栈值弹出给EIP以恢复调用后下一条指令的执行。同样堆栈指针ESP指向堆栈的最高端,EBP可指向堆栈的任意位置。 换句话说,EBP是具有固定偏移的局部变量和参数堆栈信息的偏移参考寄存器;ESP地址经常发生变化,因为它一直指向堆栈的顶端。任何压栈和出栈操作均会影响ESP的值。 * * 几种常见的数据类型包括:int, short int,long int, double,float, char,可以划分数值类(整型、浮点型),字符类,各种数据类的字长一般与机器字长相关联。 1、 int, short int, long int(默认为带符号类型signed):int一般为一个机器字长,short int 为半个机器字长,而在32位机器中,long int 与 int 有一样的字长。所以对于32位机器(比较常见)来说,int ---32位,short int –16位,long int ---32位(在16位机器中亦是)。 2、 float, double float, long double:float通常一个机器字长(32位),double是两个机器字长(64位),long double是三个或四个字长,有时也会是两个机器字长(64位)。 3、 char: 8位,一个字节 * * int main( ) 只是 UNIX 及 Linux 默许的用法, main(int argc, char *argv[ ], char *env[ ])才是UNIX和Linux中的标准写法。 argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数 *argv: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数 argv[0] 指向程序运行的全路径名 argv[1] 指向在DOS命令行中执行程序名后的第一个字符串 argv[2] 指向执行程序名后的第二个字符串 * 整型溢出不同于诸如缓冲区溢出或格式化字符串那样直接修改内存,而是利用使程序变量等于非预期值而改变程序执行流程 * * 其中userdata是用户提交的字符串,datalength是用户提交的字符串长度。func()函数所作的就是首先保证用户提交的字符串长度和字符串的实际长度一样,然后分配一块2倍于用户提交字符串大小的缓冲区,然后把用户字符串数据拷贝到这个缓冲区当中。这看起来应该是没有任何安全问题的,实际则不然,程序员仅仅考虑了对字符串数据的安全要求,
文档评论(0)