记录下踩的坑吧
前言
Ruby是什么,gem又是什么,Ruby on Rails又是什么,之前只是知道Ruby是一门面向对象的脚本语言,gem是有一个ruby的包管理器,好比是python的pip以及nodejs的NPM,而Ruby on Rails是一个使用Ruby语言写的开源Web应用框架,它是严格按照MVC结构开发的。它努力使自身保持简单,来使实际的应用开发时的代码更少,使用最少的配置。(据说Twitter就是用的这个框架)
Gem使用
Gem 是一个管理 Ruby 库和程序的标准包。Ruby gem 包的安装方式:
所有的 gem 包,会被安装到 /[Ruby root]/lib/ruby/gems/[ver]/ 目录下,这其中包括了 Cache、doc、gems、specifications 等目录,cache 下放置下载的原生 gem 包,gems 下则放置的是解压过的 gem 包。1
2 M0rk@hhh ~/.rvm/rubies/ruby-2.3.0/lib/ruby/gems/2.3.0 ls
bin build_info cache doc environment extensions gems specifications wrappers
当安装过程中遇到问题时,可以进入这些目录,手动删除有问题的 gem 包,然后重新运行 gem install [gemname] 命令即可。
Ruby Gem 命令详解:
1 | # 更新Gem自身 |
踩坑开始
开始的时候看的是这篇文章
https://community.rapid7.com/community/metasploit/blog/2014/03/14/debugging-metasploit-modules-with-pry-debugger
但是在安装的时候报错,没有好的解决方法
这个时候我发现了这个
https://github.com/deivid-rodriguez/byebug
感觉应该是相同用途,安装没报错,然后修改rb的时候一直加载不了,这个时候想到自己有安装RubyMine,那就测试个helloworld试试看。测试的没问题,如下图:
后来发现,当添加或者修改metasploit的modules的时候,需要使用 reload_all 命令来重新加载所有的模块,但是添加了 require ‘byebug’ 时候还是报错,好像是需要rerun bundle的,rerun的时候又是各种问题,首先ruby版本太低,升级完ruby版本,bundle install的时候没错了,但是运行msfconsole还是失败…完,meatsloit弄坏了,晚上回来, /opt/metasploit-framework/embedded/framework sudo ./msfupdate 升级了一下又能用了,太晚了,明天再看看吧
0727更新:
今天又看了下资料,发现byebug还是不能用,搜索metasploit debug的资料也是很老的,但是在Stack Overflow发现了这个https://stackoverflow.com/questions/43882397/debugging-about-the-metasploit-exploit-module
就试了一下pry,果然可以和metasploit无缝使用。但是蛋疼的是pry没有step和next这种最基本的单步调试功能。1
2
3
4require ‘pry’ #需要pry库,否则binding.pry就不认识了
g_a = 1
g_b = 2
binding.pry #运行到这句程序就停下来并打开pry让你调试
随便找个msf的rb脚本,插上上面的代码
pry常用命令:
1 | cd: 这可不是切换目录的,而是切换类。如”cd Article”会进入Article类中,”Article.all”可直接缩写为”all” |
rvm 常用命令:1
2
3
4RVM是Ruby Version Manager的缩写,是一个命令行工具,它可以让你轻松地安装,管理和使用多个版本的Ruby.不同的rails项目使用等ruby和rails版本不一样的时候,可以使用RVM自由切换。
1.rvm list 查看所有的ruby版本
2.rvm current 查看当前的ruby版本
3.rvm --default use 2.x.x 切换到到版本2.x.xs
小结
1.pry-debugger在ruby2.0+已不再能使用,所以基本上可以放弃
2.pry-byebug 应该是现在在用的,但是我这里bundle install完之后,msfconsole就报错了,暂时问题还没解决,感觉应该是metasploit使用了自带的ruby以及gem的问题
3.最终还是选择了没有单步步过功能的pry
4.其实python也有这种调试工具,是pdb的模块,感兴趣的可以学习下
5.msfconsole居然是一个脚本文件,一开始以为是个二进制程序。。。(当你通过whereis找不到这个文件的时候,就很有可能是个文本文件,find找到,然后file命令看一下)
6.metasploit的ruby是自带的,可执行文件在这个目录下 /opt/metasploit-framework/embedded/bin