ARM exploit编写二

本文深入讲解如何编写实现bindshell和reverseshell的shellcode,包括技术细节、系统调用、寄存器操作及避免空字节的方法。通过C语言示例和详细步骤,帮助读者理解bindshell和reverseshell的工作原理。

学习如何编写实现bind shell和reverse shell的shellcode。
首先我们要理解一些技术细节。
先来看看什么是bind shell以及它是如何工作的。通过bind shell你可以在目标机器上打开一个通信端口或者监听器。监听器会等待到来的连接,你连上去后,监听器会接收连接然后给你弹回一个shell.(其实就是我们所说的正向连接)
在这里插入图片描述
在看看Revese shell,通过reverse shell,你可以让目标机器回连到你的机器上。在这种情况下,你的机器开放了一个监听端口,然后接收从目标机器发来的连接。(即我们所说的反向连接)
在这里插入图片描述
根据实际情况的不同,两种类型的shell都有其优点和缺点。 例如,更常见的是目标网络的防火墙无法阻止传出连接而不是传入。 这意味着Bind shell将绑定目标系统上的端口,但由于传入的连接被阻止,就无法连接到它。 因此,在某些情况下,最好有一个可以利用允许传出连接的防火墙配置错误的reverse shell。 如果知道如何编写bind shell,那么自然也会知道如何编写reverse shell。 一旦了解了汇编代码是如何完成的,只需要进行一些更改即可将汇编代码转换为适合reverse shell的汇编代码。

在写bind shell的汇编之前,我们先熟悉bind shell的过程:

  1. 创建一个新的tcp socket
  2. 绑定socket到本地端口
  3. 监听到来的连接
  4. 接收连接
  5. 将STDIN,STDOUT,STDERR重定向到客户端新创建的socket
  6. 派生shell
    用c语言写出来就是如图所示,完整代码在bind_test.c

在这里插入图片描述
第一步还是明确所需的系统函数,参数以及他们的系统调用号。看看上面给出的C源码,可以知道我们需要这些函数:socket,bind,listen,accept,dup2,execve。查看系统调用号还是同样的方法,以socket为例
在这里插入图片描述
可以看到系统调用号为281
一样的方法,得到其他系统调用好,总结如下:
在这里插入图片描述
每个函数需要的参数都可以使用man命令来查看,比如execve的
在这里插入图片描述
已经给大家整理好了
在这里插入图片描述
下一步是找出这些参数的具体值。一种方法是使用strac

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值