```Msf::Exploit::FILEFORMAT```这个mixin是用来创造文件格式exploit的.这个mixin实际不是很多,但最重要的方法是file_create:
### file_create示例
顾名思义,该`file_create`方法允许您创建一个文件。您应该使用这种方法,因为它不仅仅是将数据写入磁盘。它所做的一件重要的事情就是将文件创建以这个格式报告到数据库```#{ltype}.localpath```,,和这个文件将总是被写入Metasploit的本地目录,定义在```Msf::Config.local_directory``` (默认是```~/.msf4/local```),这使得文件保持良好和有序。
要使用mixin,首先导入```Msf::Exploit::FILEFORMAT```到你的 ```Metasploit3``` 范围内
```ruby
include Msf::Exploit::FILEFORMAT
```
下面是一个file_create用来构建一个想象的exploit的例子:
```ruby
# This is my imaginary exploit
buf = ""
buf << "A" * 1024
buf << [0x40201f01].pack("V")
buf << "\x90" * 10
buf << payload.encoded
file_create(buf)
```
### 自定义文件名
这个 ```Msf::Exploit::FILENAME``` 默认情况下注册一个```FILENAME``` 数据储存选项.它实际上是可选的,如果没有文件名提供,这mixin将会用这个格式设置名字```"exploit.fileformat.#{self.shortname}"```, ```self.shortname```意味着这个模块名的短版本
如果你想设置一个默认的(但仍然可以由用户更改),那么你只需在模块中重新注册它,如下所示:
```ruby
register_options(
[
OptString.new('FILENAME', [true, 'The malicious file name', 'msf.jpg'])
], self.class)
```
### 固定文件名
偶尔,你可能不希望你的用户改变文件名。一个懒惰的技巧是通过FILENAME在运行时修改数据存储选项,但是这是非常不推荐的。事实上,如果你这样做,你将不会通过msftidy。相反,这是如何正确完成的:
1 - 注销`FILENAME`选项
```
deregister_options('FILENAME')
```
2 - 接下来,重写该`file_format_filename`方法,并使其返回所需的文件名:
```ruby
def file_format_filename
'something.jpg'
end
```
3 - 最后,请在模块描述中留下关于此的注释。
### 参考
https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/fileformat.rb
https://github.com/rapid7/metasploit-framework/tree/master/modules/exploits/windows/local
- Home
- 开始使用
- 安装metasploit开发环境
- 使用metasploit
- 使用git
- 报告一个bug
- 贡献代码
- 贡献给metasploit
- 创建一个loginscans Metasploit模块
- 接受模块和增强功能的指导
- 常见的Metasploit模块代码错误
- 样式提示
- metasploit提交者
- metasploit开发
- 为什么是ruby
- 样式提示
- 如何开始写一个exploit
- 如何开始写一个辅助模块
- 如何开始写一个post模块
- 如何开始写一个Meterpreter脚本
- 载入外部模块
- exploit rank
- Metasploit模块引用标识符
- 怎么在你的exploit中确认window补丁程序级别
- 如何使用filedropper清理文件
- 如何弃用metasploit模块
- 如何在模块开发中报告或储存数据
- 在metasploit如何使用日志
- 如何在metasploit对JavaScript进行混淆
- 如何解析一个http响应
- 如何使用HTTPClient发送HTTP请求
- 如何使用命令阶段
- 如何使用数据储存选项
- 如何在window后期开发中使用railgun
- 如何在exploit中使用powershell
- 如何使用PhpEXE来利用任意文件上传漏洞
- 如何使用FILEFORMAT mixin创建一个文件格式exploit
- 如何使用BrowserExploitServer编写一个浏览器exploit
- 如何使用HttpServer编写浏览器exploit
- 如何编写一个check()方法
- 如何使用Seh mixin来利用异常处理程序
- 如何在Windows上使用WbemExec进行写入权限攻击
- 如何使用httpserver和httpclient编写一个模块
- payloads如何工作
- 如何免杀
- 如何正确使用metasploit模块