如何执行 /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
伯明翰大学坐落于英国第二大城市伯明翰市,创建伊始名为伯明翰医学院,在1900年伯明翰大学成为英国史上第一所获得皇家特许状的红砖大学。作为世界知名学府的伯明翰大学也因其一流的教学质量、完善的教学设施、国...
我也需求好心人发 我没怎么买过这本书,所以光盘肯定木有 网上买,方便又便宜~个人觉得上网买是很好的选择,不方便的话也可以叫同事、朋友帮你上网买,到时候付钱给他就好啦。书店的话,就看看下面这些咯~滨江。...
执行摘要2020年10月26日,我们捕获到一个Gafgyt家族DDoS变种开始利用Seowon SlC 130路由器RCE漏洞进行传播。不同于往常,僵尸网络通常在大规模投递样本前进行小规模的漏洞验证,...
胡同这个词是怎么来的?这是蚂蚁庄园小课堂8月28日的问题,这次的问题难度难度很高,相信有很多的玩家不知道具体的答案而错过每天一份的180g小鸡饲料,因此这里就来告诉大家蚂蚁庄园8月28日小课堂的具体答...
国家卫健委专家组成员蒋荣猛表示:武汉3家医院增设了1000张ICU床位,从全国调配1000名ICU护士,集中救治重症病人,降低病死率,这是非常重要的一个举措。...
CAMFAMFGAMCAM故事里很拥挤,我们都来来去去,爱写出了最意外的剧情,我徘徊感情边境,你FAMFGAMEMAMF在受伤后迁徙,却。 主题曲《花火》曲:梁咏琪词:梁咏琪演唱:梁咏琪来吧伴我飞多久...