作者: Badcoffee
Email: blog.oliver@gmail.com
Blog: http://blog.csdn.net/yayong
2005年7月
最近新发现的一个Solaris的安全漏洞能够使一个非特权用户利用一个很简单的攻击程式得到系统的root权限,为了不让用Solaris系统的人遭暗算,具体细节就不说了。毕竟这篇文章不是教别人攻击别人系统的黑客教程:)这里只研究攻击程式里面的一段shell code。
问题:什么是shell code?
要了解shell code,先从缓冲区溢出谈起。
缓冲区溢出是黑客比较常用的攻击手段之一。众所周知,假如向一个有限空间的缓冲区拷贝了过长的字符串,就会覆盖相邻的存储单元。进程的局部变量保存在 stack当中的,一个函数的stack frame相邻的就是调用该函数时保存的返回地址。当发生缓冲区溢出并且覆盖到存储在stack中的函数反回地址,那么当函数执行完毕后就无法正常返回。因为这时返回地址往往是个无效的地址,在这样的情况下系统一般报告: “core dump”或“segment fault”。假如这种缓冲区溢出经过精心的计算,使得溢出后覆盖到返回地址的那个地址指向我们写的一段机器指令序列,那么这个进程的流程就会被改变,从而由我们来控制。
多数情况下,这段精心设计的指令一般的目的是执行“/bin/sh”,从而得到一个shell,因此这段代码被称为:“shell code”。假如被溢出程式是个suid root程式,得到的将是个root shell,这样整个机器就因为缓冲区溢出而被完全控制了。
关于缓冲区溢出,aleph one的Smashing The Stack For Fun And Profit做入门教程不错,能够看看。
为方便分析,我们把这段shell code单独拿出来,放到一个很简单的c程式里研究。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




