05 2012 档案
摘要:/*This is a proof of concept of buffer overflow exploitation with DEPbypass on Windows XP Professional SP3 english updated on December 9,2009 with DEP manually set to OptOut so enabled for all processes,except the ones that are put in the exception list and this programis not.This source has been co
阅读全文
摘要:wget -O - 'http://www.phrack.org/issues.html?issue=61&id=9&mode=txt' | head -n 4640 | tail -n 3239 | uudecode -o - | tar xzf -If you have wget and uudecode installed, you'll find yourself with a directory named 'clet.v1.0.0-sid'. Otherwise, install wget and uudecode and t
阅读全文
摘要:程序编好后需要调试和检测,不经过调试的程序是靠不住的。Unix下调试一般使用dbx,Linux下肯 定选择基于GNU的gdb。但调试过程中的core dump往往使你无从下手,虽然你可以用 gdb target core来看出问题时的状况,但如果core dump时堆栈被破坏掉了的话,将是很棘手的问题。 事实上问题之所以棘手的原因往往在于,早在core dump发生几百年前你的一个strcpy(sURL,&sSrcLine[iIdx]),就已经把内存搞的乱七八糟,但因为C语言的健壮性和C编译器保持沉默的高级特性使得你无法仅仅通过core文件就能轻松找的产生问题的真正语句。 Ration
阅读全文
摘要:0x04 源码解读下面以decoder_jump_header为例来说明解码部分unsigned char decoder_jump_header[] = {0xEB, 0x10, 0x5B, 0x31, 0xC9, 0x66, 0x81, 0xE9, 0xA1, 0xFE, 0x80, 0x33, 0x99, 0x43, 0xE2, 0xFA, 0xEB, 0x05, 0xE8, 0xEB, 0xFF, 0xFF, 0xFF};echo -ne "\xEB\x10\x5B\x31\xC9\x66\x81\xE9\xA1\xFE\x80\x33\x99\x43\xE2\xFA\xEB
阅读全文
摘要:shellcode的初级变形的一点点总结,大部分搜集、翻译,少量原创0x01 病毒上重定位问题0x02 shellcode解码0x03 一个unix例子0x04 源码解读0x05 参考shellcode xor编码/解码器是一种较为初级的shellcode变形的方法,当然它从中采用的方法跟病毒上的方法有些类似0x01 病毒上重定位问题病毒上的解决重定位的方法,可以方便的用到shellcode的设计中。下面部分摘自hume的<<病毒编程技术>>在病毒技术上至少有两种方法可以解决重定位的问题:A)第一种方法就是利用上述PE文件重定位表项的特殊作用构造相应的重定位表项。在感染
阅读全文
摘要:引子:__inline float _floor(float f){ static int _n; _asm fld f _asm fistp _n return (float)_n;}这个函数进行float转换 fld是压一个浮点数入栈 fistp是出栈。 所以这段代码其实是用来四舍五入的。如果你在8086编译器中编程,,上述指令无法运行,因为8086没有浮点处理器,需要协处理器。 FPU有8个80位的寄存器(编号0-7),使用扩展双精度格式存储操作数。当内存中的数据载入数据寄存器时,如果数据格式不是扩展双精度格式,则在载入过程中进行格式转换。8个寄存器组成一个循环堆栈,栈顶纪录保存...
阅读全文
摘要:介绍多阶段加载是基于如下这种想法:如果一个小片段的shellcode可以在目标上执行,理论上可以通过网络连接、传输和执行其他的shellcode,或者甚至是一个完整的二进制可执行文件。关键的想法是对加载的最终程序进行分级。这样子,只有严格大小的代码会在第一阶段加载。这种想法在一篇优秀的文章<<Understanding Windows Shellcode>>中有详细介绍。第一阶段:shellcode加载这是在加载链中至关重要的一步。代码必须够小,没有NULLs值并且必须能够在各种平台上执行。它的主要功能是找到用于连接的套接字描述符,并通过它读取额外的数据。当完成时,加载
阅读全文
摘要:目前接触的HOOK总结,学习HOOK只是为了让我对内核更加熟悉,我对那些毛的病毒木马没毛兴趣。Windows平台上HOOK:应用层HOOK:1.消息HOOK:局部钩子、全局钩子、全局低级键盘钩子之类2.IAT HOOK:通过修改IAT(导入表)表中的地址 过程就是先取DOS头,再取PE头偏移,再获取导入信息,其中的FirstThunk就是IAT偏移,再遍历,这样就找到了IAT表3.EAT HOOK:(这个没有实际去做,知道思路) 详见http://bbs.pediy.com/showthread.php?t=62574内核级HOOK:内核hook基本上大同小异,都是获取相关函数的地址后修改成自
阅读全文
摘要:Q:linux下同时存在当静态库和动态库同名时,gcc命令会使用哪个库文件呢A:gcc会优先选择动态库# lshello.c hello.h main.c#在来创建静态库文件libmyhello.a和动态库文件libmyhello.so。# gcc -c hello.c# ar -cr libmyhello.a hello.o (或-cvr)# gcc -shared -fPCI -o libmyhello.so hello.o# lshello.c hello.h hello.o libmyhello.a libmyhello.so main.c通过上述最后一条ls命令,可以发现静态库文件l
阅读全文
摘要:太精辟了http://blog.csdn.net/lzshlzsh/article/details/6066628http://www.ibm.com/developerworks/cn/linux/l-elf/part1/http://www.ibm.com/developerworks/cn/linux/l-elf/part2/
阅读全文
摘要:-fPIC产生位置无关代码(PIC),一般创建共享库时用到。在x86上,PIC的代码的符号引用都是通过ebx进行操作的。(gdb) disassemble mainDump of assembler code for function main: 0x0804840a <+0>: push %ebp 0x0804840b <+1>: mov %esp,%ebp 0x0804840d <+3>: push %ebx 0x0804840e <+4>: and $0xfffffff0,%esp 0x08048411 <+7>: call 0
阅读全文
摘要:StackGuard:提供了两种技术来保证攻击者不能伪造canary值:"终止符"和"随机数".StackShield使用了另外一种不同的技术。它的做法是创建一个特别的堆栈用来储存函数返回地址的一份拷贝。它在受保护的函数的开头和结尾分别增加一段代码,开头处的代码用来将函数返回地址拷贝到一个特殊的表中,而结尾处的代码用来将返回地址从表中拷贝回堆栈。因此函数执行流程不会改变,将总是正确返回到主调函数中。由于没有比较堆栈中的返回地址与保存的是否相同,因此并不能得知是否发生了堆栈溢出。在最新的版本中已经增加了一些新的保护措施,当调用一个地址在非文本段内的函数指针
阅读全文
摘要:再做metasploit时,生成了html文件,需要提取相关特征用apt-get安装的apache默认开启gzip,导致特征不存在了。需要关闭调gzip,最好的方式是关闭调deflatehttps://code.google.com/p/unxmail/wiki/Apache2Debian开启或禁用apache2的模块a2dismod modname 禁用某个模块a2enmod modname 启用某个模块apachectl -M 查看加载的模块
阅读全文