gpt4 book ai didi

ruby - 如何在不使用空格字符的情况下运行 unix 命令,以便执行远程命令?

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:19 25 4
gpt4 key购买 nike

我一直在学习远程/任意命令执行。在这样做的过程中,我遇到了一些我认为尝试和利用会很有趣的 Ruby。

我已经取得了一些成功,因为我设法让它运行“ls”命令,但我不知道如何将空格字符添加到我的命令中。如果我在其中添加一个空格,URI 调用的解析方法将抛出异常。

这是我试图利用的代码:

injection = "www.google.com';ls;#"

require 'uri'
URI.parse(injection)
puts `curl '#{injection}'`

因此,如果您选择接受挑战,那么您的挑战是通过更改注入(inject)字符串来运行“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)

也许这是不可能的?

谢谢

最佳答案

您可以使用内部字段分隔符 ( <space><tab><newline> )。由于这是 shell 用来分隔的内容,因此它将接受它作为分隔符。

injection = "www.google.com';ls$IFS-l;#"

(顺便说一句,感谢周六晚上的精彩拼图。)

关于ruby - 如何在不使用空格字符的情况下运行 unix 命令,以便执行远程命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com