リモート/任意のコマンド実行について学習しています。そうしているうちに、試して活用するのが楽しいと思われる Ruby に出くわしました。
「ls」コマンドを実行することができたので、ある程度成功しましたが、コマンドにスペース文字を追加する方法がわかりません。スペースを追加すると、URI が呼び出す parse メソッドが例外をスローします。
悪用しようとしていたコードは次のとおりです。
injection = "www.google.com';ls;#"
require 'uri'
URI.parse(injection)
puts `curl '#{injection}'`
したがって、それを受け入れることを選択した場合の課題は、注入文字列を変更するだけで「ls」の代わりに「ls -l」コマンドを実行することです。最初の行以外は変更できません。
私が試したこと:
ls%2f-l - # Doesn't raise an exception but unix doesn't unescape CGI encodings.
ls\x20-l - # Raises an exception because Ruby parses the UTF-8.
# Other various escape combinations (\\x20, etc)
多分それは不可能ですか?
ありがとう