我一直在学习远程/任意命令执行。在这样做的过程中,我遇到了一些我认为尝试和利用会很有趣的 Ruby。
当我设法让它运行“ls”命令时,我已经取得了一些成功,但我不知道如何在我的命令中添加空格字符。如果我在其中添加一个空格,则 URI 调用的 parse 方法会引发异常。
这是我试图利用的代码:
injection = "www.google.com';ls;#"
require 'uri'
URI.parse(injection)
puts `curl '#{injection}'`
因此,如果您选择接受它,您的挑战是仅通过更改注入字符串来运行“ls -l”命令而不是“ls”。除了第一行之外,您可能不会更改任何内容。
我尝试过的事情:
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)
也许这是不可能的?
谢谢