🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
```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