"/>
声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 前言 Ruby编程语言可以说是Metasploit框架的核心,想要学习好Metasploit模块编写必须要会Ruby。不过Ruby到底是什么呢?根据Ruby官方网站的说法:"Ruby一门开源的动态编程语言,注重简洁和效率。Ruby 的句法优雅,读起来自然,写起来舒适。"(引自Ruby中文官网) 本文只讲解涉及编写Metasploit模块所必需的Ruby知识,如需更多介绍可以查阅Ruby教程,进行学习。 Ruby的交互式命令行 下载Ruby,这里直接使用Kali系统自带的Ruby环境,跟Python等语言一样,ruby也有命令交互的,输入irb即可进入到命令行交互操作。 下面做个计算与赋值的简单操作: 命令行中定义方法 方法或函数是一组语句,当强调它们时就会执行。在使用Metasploit模块时,Ruby的方法是一个很重要的部分。语法格式: def method_name [( [arg [= default]]...[, * arg [, &expr ]])] 首先已def开始,end声明放在最后来结束对方法的定义,arg指的是方法所接收的参数,expr指的是用来接受并计算的表达式。 下面定义一个函数方法: 可以看到,函数通过运算打印出了正确的结果。Ruby语言提供了puts和print这两种输出打印函数。当涉及Metasploit时,将使用print_line函数。 下面分别使用print_line、print_good、print_error、print_warning、print_status、与print_blank_line语句来表示行、成功执行、错误执行、警告、状态与换行: 本段书写错误,正确语句请看文章结尾处评论inal Map lazyMap = LazyMap.decorate(innerMap, transformerChain);final Map mapProxy = Gadgets.createMemoitizedProxy(lazyMap, Map.class);final InvocationHandler handler = Gadgets.createMemoizedInvocationHandler(mapProxy); Ruby中的变量和数据类型 变量是指一个值可以随时改变的占位符。Ruby语言支持众多的数据类型,但只讲解与Metasploit相关的数据类型。 字符串处理 使用Ruby语言编写Metasploit模块时,尽量使用双引号标记,因为单引号可能会产生问题: 字符串连接 将两个不同结果连接成一个字符串,使用+运算符实现字符串的连接;当需要一个变量后面追加数据的时候,可以使用<<运算符: 子字符串substring函数 split函数 Ruby中的数字和转换 在处理用户输入是,可以用to_i函数将字符串类型的输入转换成数字;另外,可以用to_s函数将一个数字转换成字符串。 数制转换 16进制到10进制的转换 10进制到16进制的转换 范围 范围(range)是一个很重要的内容,广泛应用在Metasploit的辅助模块中。例如auxiliary... 一个范围的对象提供多种操作:搜索、查找最小值与最大值、显示范围中的所有数据。这里include?函数可以检查范围中是否包含某一个特定的值。此外,min与max分别显示范围中的最小值和最大值。 Ruby中的循环 迭代语句被称为循环。Ruby的语法和其他编程语言的不同之处: def for1(a) 这里使用#{i}去打印输出的变量i的值,关键字\n指定开始新的一行。 而迭代循环是通过each实现的,在Metasploit模块中被广泛使用。 def each_example(a) 定义一个方法,并接收数组a,再用each循环打印出来。 招聘 安恒雷神众测SRC运营(实习生) 4. 具备美术功底、懂得设计美化等 简历投递至 strategy@dbappsecurity.com.cn 设计师(实习生) ———————— 【职位描述】 简历投递至 strategy@dbappsecurity.com.cn 安全招聘 工作环境:一座大厦,健身场所,医师,帅哥,美女,高级食堂… 岗位:安全红队武器自动化工程师 简历投递至 strategy@dbappsecurity.com.cn 专注渗透测试技术 全球最新网络攻击技术 END 上一篇:不能在PHP中使用泛型?为什么? 下一篇:打造定制化的Metasploit-第三课 |