1

我正在尝试进行涉及本地文件包含的 ctf 挑战。

考虑到这一点,我用 , 等重新创建了一个类似“linux”的文件夹系统/etc/……/var/因为/home我使用免费的网络托管服务。

为了不让用户觉得可疑,我只想以图形方式更改 URL,使其看起来像用户在根目录中,而他确实在其他子目录中(用户也需要能够包含../../etc/passwd)。到目前为止,这就是我所拥有的:

RewriteEngine On
RewriteBase /folder1/folder2/

该文件位于 中/folder1/folder2/,但它什么也不做...

有人能帮我吗?

PS:对不起我的英语。

4

1 回答 1

0
RewriteBase /folder1/folder2/

就其本身而言,RewriteBase不做任何事情。该RewriteBase指令覆盖了要在指令中的相对路径替换中使用的基本 URL 路径RewriteRule。例如,给定以下内容:

RewriteBase /folder1/folder2/
RewriteRule ^foo$ bar [L]

如上所述,如果您请求,/foo则请求将在内部重写,/folder1/folder1/bar因为替换字符串bar相对的。这与陈述以下内容相同:

RewriteRule ^foo$ /folder1/folder2/bar [L]

这就是RewriteBase指令所做的全部。您在这里并不需要它,但如果您愿意,您可以使用它。

这个文件位于“/folder1/folder2/”中,但它什么也不做......

您需要针对文档根目录的请求,因此您不能将此.htaccess文件放在/folder1/folder2/目录中 - 它根本不会做任何事情。.htaccess位于任意位置的文件/folder1/folder2/.htaccess仅针对对其/folder1/folder2/及其所有子目录的请求。

通过它的声音,您希望在内部将所有请求从文档根目录重写到/folder1/folder2/目录 - 有效地对用户隐藏/folder1/folder2/

为此,您需要在/.htaccess位于文档根目录的文件中使用类似以下内容:

RewriteEngine On

RewriteRule !^folder1/folder2 /folder1/folder2%{REQUEST_URI} [L]

上面将任何尚未针对/folder1/folder2该子目录的请求重写。

用户还需要能够包括../../etc/passwd

我不确定您打算如何“包含”它,但如果您指的是客户端 URL 路径,那么您不应该使用这样的相对 URL 路径。使用根相对 URL 路径,例如。/etc/passwd(来自文档根目录)。

如何编写一个.htaccess更改/folder1/folder2//

请注意,此.htaccess文件完全相反。它将请求/(文档根目录)的 URL 更改为/folder1/folder2/- 这似乎是您问题中的要求。您需要在内部链接中已更改/folder1/folder2/为。/

于 2021-02-17T20:03:31.973 回答