我正在尝试进行涉及本地文件包含的 ctf 挑战。
考虑到这一点,我用 /etc/
、/var/
、/home
等重新创建了一个类似“linux”的文件夹系统......因为我使用免费的网络托管服务。
为了不让用户看起来可疑,我只想以图形方式更改 URL,使其看起来像用户位于根目录中,而他确实位于其他子目录中(用户也需要能够包括../../etc/passwd
)。到目前为止,这就是我所拥有的:
RewriteEngine On
RewriteBase /folder1/folder2/
这个文件位于 /folder1/folder2/
,但它什么都不做...
有人可以帮我吗?
PS:对不起我的英语。
答案 0 :(得分:0)
RewriteBase /folder1/folder2/
就其本身而言,RewriteBase
不做任何事情。 RewriteBase
指令覆盖要在 RewriteRule
指令中的相对路径替换中使用的基本 URL 路径。例如,给定以下内容:
RewriteBase /folder1/folder2/
RewriteRule ^foo$ bar [L]
根据上述内容,如果您请求 /foo
,那么该请求将在内部重写为 /folder1/folder1/bar
,因为 substitution 字符串 bar
是 relative< /em>。这与声明以下内容相同:
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/
更改为 /
。