如何执行 /bin/sh?
在C中,spawn出一个shell的代码可能象这样:
shell.c :
#include
void main()
{
char *shell[2];
shell[0] = "/bin/sh";
shell[1] = NULL;
execve(shell[0], shell, NULL);
}
[murat@victim murat]$ make shell
cc -W -Wall -pedantic -g shell.c -o shell
[murat@victim murat]$ ./shell
bash$
如果你看execve的man说明页($man 2 execve),你将看到execve要求一个将要执行的文件名的指针,一个NULL终止的参数数组,和一个可以为NULL的环境指针。如果你编译运行了这个输出的二进制文件,你将看到你spawn出了一个新的shell。
目前为止一切顺利……但是我们不能用这种方式spawn出一个shell,是吗?我们如何能用这种方式把这个代码放到漏洞程序里去呢?我们不能!
这给我们造成了一个新问题:我们如何能把我们的攻击代码传给漏洞程序?我们将需要在易受攻击的缓冲区传递我们的代码,它很有可能是一段shell代码。为了实现这个目标,我们必须能够把我们的shell代码用一个字符串表示。
因此,我们将列出所有的来spawn出一个shell的汇编指令,得到它们的运算码,把它们一个一个列出来,然后把它们作为一个shell生成串组装起来。
首先,让我们看看上面的代码(shell.c)在汇编中是什么样子。让我们静态编译程序(这个 *** ,execve系统调用也将被反汇编)然后看:
[murat@victim murat]$ gcc -static -g -o shell shell.c
[murat@victim murat]$ objdump -d shell | grep \: -A 12
0804ca10 :
804ca10: 53 pushl 離
804ca11: 8b 54 24 10 movl 0x10(%esp,1),韝
804ca15: 8b 4c 24 0c movl 0xc(%esp,1),靫
804ca19: 8b 5c 24 08 movl 0x8(%esp,1),離
804ca1d: b8 0b 00 00 00 movl $0xb,陎
804ca22: cd 80 int $0x80
804ca24: 5b popl 離
804ca25: 3d 01 f0 ff ff cmpl $0xfffff001,陎
804ca2a: 0f 83 00 02 00 jae 804cc30
当代人结婚率越来越低,反而离婚率越来越高,每个人活得越来越自我,越来越独立,或许是社会的压力大,或许是没有喜欢的人,当代人为什么不愿意结婚?下面友谊长存带来介绍。 当代人为什么不愿意结婚? 有人说...
黑客在线接单先做事后付款 那么张某是怎么成为黑客的,这件事要从他的网度之路开始的。逢赌必输必输的张某,好不容易一次在网站赢了一万多元,但是发现不能体现,一气之下学起了黑客技术,通过在网...
本文导读目录: 1、一部电影,几个黑客控制整个美国,导致交通瘫痪,电力关闭,所有行业受影响,有个警察和黑客恢复 2、黑客入侵15万个监控摄像头,都有哪些知名企业中招? 3、求外国电影名 内容:...
曾厝垵怎么读?曾厝垵是在什么地方?曾厝垵有什么地方特色?很多人在生活、学习中遇到“曾厝垵”这个词,大家都不知道怎么读这三个生僻字。你想知道这些有趣的生僻字怎么读吗?豪友网专门精心整理了生僻字怎么读相关...
【#公安部对30人发出A级通缉令#急转!发现线索奖5万元!】公安部近日发布第二批A级通缉令,对30名重大涉黑涉恶在逃犯罪嫌疑人发出通缉。公安部提醒广大人民群众发现下图在逃人员线索,积极举报。对发现线索...
妈妈们对孩子补钙缺钙这个问题非常的关心,不少妈妈都对孩子需要补钙吗有很大的疑问,那么孩子需要补钙吗,孩子补钙应该怎么补比较好呢,友谊长存小编就来说说吧。 钙宝宝骨骼发育的基础 钙构成宝宝骨骼和牙齿...