上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
摘要: StackGuard:提供了两种技术来保证攻击者不能伪造canary值:"终止符"和"随机数".StackShield使用了另外一种不同的技术。它的做法是创建一个特别的堆栈用来储存函数返回地址的一份拷贝。它在受保护的函数的开头和结尾分别增加一段代码,开头处的代码用来将函数返回地址拷贝到一个特殊的表中,而结尾处的代码用来将返回地址从表中拷贝回堆栈。因此函数执行流程不会改变,将总是正确返回到主调函数中。由于没有比较堆栈中的返回地址与保存的是否相同,因此并不能得知是否发生了堆栈溢出。在最新的版本中已经增加了一些新的保护措施,当调用一个地址在非文本段内的函数指针 阅读全文
posted @ 2012-05-05 15:11 yarpee 阅读(1317) 评论(0) 推荐(0) 编辑
摘要: 再做metasploit时,生成了html文件,需要提取相关特征用apt-get安装的apache默认开启gzip,导致特征不存在了。需要关闭调gzip,最好的方式是关闭调deflatehttps://code.google.com/p/unxmail/wiki/Apache2Debian开启或禁用apache2的模块a2dismod modname 禁用某个模块a2enmod modname 启用某个模块apachectl -M 查看加载的模块 阅读全文
posted @ 2012-05-02 16:47 yarpee 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 更新内核到最新,用patch的时候一直报错,最后发现原来ubuntu用的好似dash,表示很尴尬改成bash后就可以了http://blog.sina.com.cn/s/blog_63484d2d0100mdfn.html 阅读全文
posted @ 2012-04-27 14:47 yarpee 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 注意memcpy 读src的长度,写src的长度http://hi.baidu.com/yelangdefendou/blog/item/d5ddcfeb9e08982ab80e2d8b.html 阅读全文
posted @ 2012-04-26 16:55 yarpee 阅读(337) 评论(0) 推荐(0) 编辑
摘要: http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.htmlhttp://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html#Heap-Consistency-Checkinghttp://stackoverflow.com/questions/262439/create-a-wrapper-function-for-malloc-and-free-in-chttp://stackoverflow.com/questi 阅读全文
posted @ 2012-04-25 18:39 yarpee 阅读(283) 评论(0) 推荐(0) 编辑
摘要: argument_index$是一个十进制整数,用于表明要格式化第几个参数。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。#include <stdio.h>int main(){int a = 0x123,b = 0x456,d = 0x888;printf("%2\$x",a,b,d);}moonflow@moonflow-ThinkPad-Edge:~/apuetrans$ ./format 456这个特性在格式化串漏洞中可以方便的访问到需要的内存数据把0x08064d55处的字符串读出来$& 阅读全文
posted @ 2012-04-25 09:37 yarpee 阅读(319) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/kittyjie/article/details/4386742http://blog.csdn.net/szkbsgy/article/details/6420113http://www.cnblogs.com/YOUEN/archive/2012/02/02/2336115.htmlhttp://blog.csdn.net/njzhiyuan/article/details/4369588http://blog.csdn.net/xufei96/article/details/5984647 阅读全文
posted @ 2012-04-24 18:52 yarpee 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1.KMP算法的核心思想是利用已经得到的部分匹配信息来进行后面的匹配过程KMP算法,即Knuth-Morris-Pratt算法,是一种典型的基于前缀的搜索的字符串匹配算法。(1)next[0]= -1 意义:任何串的第一个字符的模式值规定为-1。(2)next[j]= -1 意义:模式串T中下标为j的字符,如果与首字符相同,且j的前面的1—k个字符与开头的1—k个字符不等(或者相等但T[k]==T[j])(1≤k<j)。如:T=”abCabCad” 则 next[6]=-1,因T[3]=T[6](3)next[j]=k 意义:模式串T中下标为j的字符,如果j的前面k个字符与开头的k个字符 阅读全文
posted @ 2012-04-24 16:46 yarpee 阅读(191) 评论(0) 推荐(0) 编辑
摘要: extern int errno在支持多线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errno以避免一个线程干扰另一个线程。Linux支持多线程存取errno,将其定义为:extern int *__errno_location(void);#define errno (*__errno_location())char *strerror(int errnum) //将errnum映射为一个出错信息字符串void perror(const char *msg) 阅读全文
posted @ 2012-04-22 22:07 yarpee 阅读(409) 评论(0) 推荐(0) 编辑
摘要: printf中的缺陷:#include <stdio.h>main(){ int a = 44,b = 77; printf("a=%d,b=%d\n",a,b); printf("a=%d,b=%d\n");}则会去读栈上存在的数据1.用printf读取内存数据#include <stdio.h>int main(int argc,char **argv){ printf(argv[1]);}可以利用格式化串漏洞读内存2.用printf向内存写数据如果能够配合上修改内存数据,就有可能引起进程劫持和shellcode植入了在格式化 阅读全文
posted @ 2012-04-22 15:28 yarpee 阅读(498) 评论(0) 推荐(0) 编辑
摘要: #define _ALERT 0#define _CRIT 1#define _ERR 2#define _WARNING 3#define _NOTICE 4#define _INFO 5#define _DEBUG 6#define DP_ALERT_TEXT "ALERT:"#define DP_CRIT_TEXT "CRITICAL:"#define DP_ERR_TEXT "ERROR:"#define DP_WARNING_TEXT "WARNING:"#define DP_NOTICE_TEXT &q 阅读全文
posted @ 2012-04-21 19:12 yarpee 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 如果程序比较长,我们有时记不住pn3所指的内存是否已经被释放,在继续使用pn3之前,通常会用语句if (pn3!= NULL)进行防错处理。很遗憾,此时if 语句起不到防错作用,因为即便pn3不是NULL 指针,它也不指向合法的内存块。因此,建议在delete释放了内存之后,应立即将指针赋值为NULL,防止产生“野指针”。 char *p = (char *) malloc(100); strcpy(p, “hello”); free(p); // p 所指的内存被释放,但是p所指的地址仍然不变 … if(p != NULL) // 没... 阅读全文
posted @ 2012-04-21 17:24 yarpee 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 编写代码时应当注意避免滥用系统调用减少fread与read系统调用的次数#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <unistd.h>#include <sys/mman.h>void main(){ int fd = open("test.file",o); struct stat statbuf; char *start; char buf[2] = {0}; in 阅读全文
posted @ 2012-04-21 17:10 yarpee 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 2.6的内核的系统调用的入口在那里,内核里说是0x80,可实际的机器呢?当你在一个比较新的linux系统下使用ldd命令时,你会经常看到一个比较奇怪的文件名,即linux-gate.so.1:ldd /bin/shlinux-gate.so.1 => (0xffffe000)libdl.so.2 => /lib/libdl.so.2 (0xb7fb2000)libc.so.6 => /lib/libc.so.6 (0xb7e7c000)/lib/ld-linux.so.2 (0xb7fba000)它到底是什么文件呢?仅仅是一个动态载入库(dynamically loaded 阅读全文
posted @ 2012-04-21 16:57 yarpee 阅读(489) 评论(0) 推荐(0) 编辑
摘要: dup和dup2函数#include <unistd.h>int dup(int filedes);int dup2(int filedes,int filedes2); //两函数的返回值:若成功则返回新的文件描述符,若出错则返回-1由dup返回的新文件描述符一定是当前可用文件描述符中的最小数值。用dup2则可以用filedes2参数指定新描述符的数值。如果filedes2已经打开,则先将其关闭。如果filedes等于filedes2,则dup2返回filedes2,则不关闭它。一、重定向问题:下面是一个例子程序:#define TESTSTR "Hello dup2\ 阅读全文
posted @ 2012-04-21 16:56 yarpee 阅读(797) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页