| 域名空间 下载中心 社区论坛 信息公告 MY小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
FreeBSDshellcode编写攻略http://www.iyit.net 日期:2006-4-29 23:23:55 来源: 点击: |
我第一次编写缓冲区溢出程序时,操作系统平台是Red Hat Linux,使用的shellcode是 从互联网上“成吨”的Linux shellcode中随便挑选的,就是Aleph1前辈公布的 “标准shellcode”。:)后来便开始自己写shellcode,但主要都是for Linux的。最近在研究FreeBSD系统下的缓冲区溢出时,发现那些攻击程序所提供的 shellcode似乎与Linux下的有所不同。(具体哪里不同,下面会讲到的。)好奇之余, 便萌发了独立编写FreeBSD系统下shellcode的念头。同时也想对标准shellcode做一 些改进,算是对自己的一点点挑战吧?#海? 在编写FreeBSD shellcode的一天半里,无意中发现SCO Unix系统在汇编级的处理 与FreeBSD有很多类似之处。耐不住手痒,花了不到两个小时把shellcode for SCO也完 成了。:)由于编写过程大同小异,关于如何在SCO Unix下编写shellcode,我便不再另外写文章了。(我很会偷懒?也许吧。;))另外, 文中还介绍到了一些技巧,希望能对大家学习计算机安全技术有所裨益。 我想以后我大概是不会再写诸如”如何编写xxx系统下的shellcode“之类的文章了。 ;)因为只要明白了整个编写过程的原理和步骤,已经没什么很新鲜的了。 ---[[ 准备工作 1、FreeBSD操作系统知识 2、熟悉C编程语言、汇编语言、gdb调试器(这个是hacker的最低标准!) 3、有Linux等系统平台下shellcode的经验 4、较强的分析能力和想像力 5、牛奶、面包、饼干和音乐(呵呵,这是我的“工作套餐”。;)) (注:我的工作环境-- FreeBSD 4.0 (recompiled kernel) gcc version 2.95.2 19991024 (release) GNU gdb 4.18 ---[[ 开始 首先,当然是了解并掌握FreeBSD是如何运行shell程序(如/bin/sh)的。 和编写Linux系统下的shellcode一样,创建以下程序: /* execve.c */ #include int main() { char *name[2]; name[0]="/bin/sh"; name[1]=NULL; execve(name[0],name,NULL); return 0; } 编译,试运行: bash-2.03$ gcc -ggdb -static -o execv execve.c bash-2.03$ ./execv $ exit bash-2.03$ 现在用gdb调试器跟踪程序的执行代码: bash-2.03$ gdb execv GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-unknown-freebsd"... (gdb) disass main Dump of assembler code for function main: 0x8048160 : pushl %ebp 0x8048161 : movl %esp,%ebp 0x8048163 : subl $0x18,%esp // 以上是函数调用时的堆栈操作 0x8048166 : movl $0x8048361,0xfffffff8(%ebp) // 保存name字符串数组的地址 0x804816d : movl $0x0,0xfffffffc(%ebp) // 保存NULL空字符串 0x8048174 : addl $0xfffffffc,%esp 0x8048177 : pushl $0x0 // 将0x0压栈 0x8048179 : leal 0xfffffff8(%ebp),%eax 0x804817c : pushl %eax // 将name字符串数组地址的地址压栈 0x804817d : movl 0xfffffff8(%ebp),%eax 编辑: [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:书写Linux下自己的shellcode 下一篇:找回Linux超级用户rootaiyuanyyg 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||