-
-
[求助]有关《The Shellcoder's handbook》第2章的一点疑问
-
发表于:
2008-2-27 21:18
4464
-
[求助]有关《The Shellcoder's handbook》第2章的一点疑问
非常感谢译者!
我是一个新手,没怎么接触过Linux,更不能提Unix了。
关于《The Shellcoder's handbook》2.4利用漏洞获得Root权限:第20页的程序,
首先,根据我的理解,这个程序是生成要溢出的缓冲区,这个缓冲区中存放了提升权限的shellcode,并在shellcode后面加上猜测的shellcode第一条指令的地址。这样溢出部分修改栈里的RET(即EIP),使其在函数调用结束后执行shellcode。这个函数就是19页上的简单程序中的函数strcpy(little_array,argv[1]),如果argv[1]过大,将使little_array溢出,从而修改RET,将其指向shellcode。我的理解是否有不对的地方?
第二,勘误上说缺少了对变量buff的内存分配malloc(bsize)。由于malloc是在堆上分配内存,所以并不会影响栈顶指针ESP,而根据接下来的攻击猜测,offset的值始终为0,那么不管每次输入的参数为多少,只是影响在堆上分配内存的大学,对栈并没有影响,所以addr = find_start() - offset的值是不变的(至少在win32平台上是不变的,难道unix上就变化了?)。可是根据作者的描述,输入参数不一样,addr的值确实在变化。这是为什么?
第三,要执行的shellcode第一条指令的地址是在little_array里还是在argv[1]里,抑或是在buff(堆)里?
先表示感谢!
[课程]FART 脱壳王!加量不加价!FART作者讲授!