Linux Shellcode 编写

Shellcode简介 Shellcode是一段用于利用软件漏洞的有效负载,它通常是用汇编语言编写的机器码,可以执行特定的功能,例如启动一个命令行shell,从而让攻击者控制被攻击的机器。Shellcode之所以被称为shellcode,是因为它最初的目的是在目标系统上执行/bin/sh命令,打开一个交互式shell。 Shellcode可以根据攻击者是否在目标机器上执行有效负载分为本地shellcode和远程shellcode。本地shellcode通常用于在攻击者对计算机的访问权限有限,需要利用软件漏洞提升权限的情况。远程shellcode通常用于在攻击者以运行在某个网络中的另一台机器上的易受攻击的进程为目标时,如果成功执行,shellcode可以通过网络访问目标主机。 汇编基础 以编译输出wolf为例,编写wolf.asm文件如下: BITS 32 section .data msg db "wolf", 0xa section .text global _start _start: mov eax, 4 ; syscall to write() mov ebx, 1 mov ecx, msg mov edx, 4 int 0x80 mov eax, 1 mov ebx, 0 int 0x80 然后执行以下命令安装并编译: apt-get install libc6-dev-i386 ┌──(root㉿kali)-[/usr/src/linux-shellcode] └─# nasm -f elf32 wolf.asm ┌──(root㉿kali)-[/usr/src/linux-shellcode]…