问题标签 [directory-traversal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6578 浏览

bash - 使用 find 递归地从 bash 脚本中获取文件名

我正在尝试以递归方式从 find 命令中检索文件名。此命令打印具有完整路径的所有文件名

但是当我尝试使用这些命令获取文件名时,它会打印

它省略了其他 2 个文件。我是 shell 脚本的新手。我无法弄清楚这个有什么问题。

编辑:

这是我真正想要的。

  1. 我想递归地遍历一个目录并找到所有的 png 图像
  2. 将其发送到 pngnq 进行 RGBA 压缩
  3. 它输出新文件orgfilename-nq8.png
  4. 将其发送到 pngcrush 并重命名并生成一个新文件(org 文件将被覆盖)
  5. 删除新文件

我有一个适用于单个目录的代码

我想递归地做这个

0 投票
5 回答
591 浏览

c# - 如何在路径的给定部分下面找到文件夹?

给定路径和某个部分,我如何才能找到该部分正下方的文件夹名称?

这很难解释,让我举几个例子。假设我正在寻找“Dev/Branches”下面的文件夹名称。以下是示例输入,预期结果以粗体显示

  • C:\Code\Dev\Branches\最新\bin\abc.dll
  • C:\开发\分支\ 5.1
  • D:\My Documents\Branches\ 7.0 \Source\Tests\test.cs

我正在使用 C#

编辑:我想我可以使用正则表达式/Dev/Branches/(.*?)/捕获第一组,但是没有正则表达式有没有更简洁的解决方案?无论如何,那个正则表达式在第二种情况下会失败。

0 投票
1 回答
2650 浏览

security - 目录遍历攻击

我正在尝试从http://www.acunetix.com/websitesecurity/directory-traversal/了解目录遍历攻击

我已经了解了通过 Web 应用程序代码进行的攻击:-

例如http://test.webarticles.com/show.asp?view=../../../../../Windows/system.ini

其中 ../ 将向上移动一个目录。

在通过 Web 服务器的目录遍历攻击中,它说 Web 服务器转义码用于执行命令。

例如http://server.com/scripts/..%5c../Windows/System32/cmd.exe?/c+dir+c :\

其中 %5c 是“\”的转义码。

网络服务器如何解析此 URL?更清楚地说,一旦网络服务器收到此 URL,它将导航到脚本文件夹,但随后会遇到转义码。因此它会将所有后续字符视为正常。所以 ../Windows/System32/cmd.exe?/c+dir+C:\ 被视为正常。那么 .. 在 %5c 之前有什么用呢?

0 投票
2 回答
4652 浏览

c# - 我的代码是否会阻止 C# 中的目录遍历?

请在下面找到我编写的代码:

请让我知道此代码是否可以防止目录遍历缺陷?

0 投票
1 回答
1125 浏览

c - 如何修改 C 程序以将其转换为函数

我正在尝试获取一个给定的程序并将其转换为一个函数(以便我可以修改它以进行递归调用)。最初的分配是用于目录遍历(深度优先)。这只是为了帮助我开始。

原始程序:

该程序完美运行。但是当我把它变成一个函数时,我得到了一个错误。我相信这与通过

这是我到目前为止尝试制作的代码,main.c:

和 shownames.c:

我知道这可能是一个相当容易的错误,我似乎无法弄清楚我做错了什么。任何帮助将不胜感激。谢谢!

0 投票
1 回答
1580 浏览

java - 用于比较两个目录并给出报告和检测/删除重复项的实用程序

用于比较两个目录并给出文件总数的实用程序,它应该显示重复项和删除这些重复项的选项。

我想编写一个比较两个目录的Java实用程序,并报告以下文件和目录的总数,如果有任何重复的文件或子目录,它应该显示重复项和删除这些重复项的选项连同用户界面。我可以编写代码来比较两个文件的大小,但我希望将文件与所有类型的扩展名(如 .pdf、.jpeg、.bmp、.doc、.mp3、.avi 等)进行比较。

0 投票
1 回答
1064 浏览

php - dirname 是否足以防止目录遍历攻击?

考虑以下经典问题案例:

此代码容易受到目录遍历攻击,例如,如果 的值为$_GET['f']../etc/shadow文件的内容,则该文件的内容将被泄露给攻击者。

有一些众所周知的方法可以防止这种类型的攻击;我不是在问如何做到这一点。问题是:下面使用dirname防弹的方式来防止攻击吗?

听起来应该是因为dirname

  • .当且仅当输入路径中没有斜杠时才返回(在线文档的保证不那么严格,但来源是明确的)
  • 是二进制安全的(因此不能被嵌入的空值欺骗)

据我所知,唯一可能的攻击途径$_GET['f']是以编码方式传递数据,这样字符/\(让我们不要忘记 Windows)编码为包含相应字符的 ASCII 值的东西,并且同时,底层 C 运行时库的fopen函数必须透明地支持这种编码。

无 ASCII 值限制排除了所有单字节编码、UTF-8 以及 UTF-16 的两种风格;此外,由于 C 运行时的规范与平台无关,因此攻击只能适用于某些使用“易受攻击”编码来表示名称的文件系统。据我所知,这样的文件系统并不存在。任何人都很难创造它;最后,即使 PHP 存在,也不会托管在这样一个假设的奇异系统上。

总之,在我看来,这个检查100% 安全的。有什么我错过的吗?

0 投票
1 回答
248 浏览

php - 为什么这个 php 文件夹列表脚本会重复两次?

嘿,我现在只是构建一个小 php 脚本来列出目录中的文件夹和文件(不担心安全性或验证 - 我只使用)但出于某种原因 - 它似乎在移动到下一个之前扫描了基本目录两次。我尝试了各种方法来修复它,但似乎没有任何效果,你能帮帮我吗?

代码:

输出是:

.. 还有更多,但正如您所见,顶层目录被扫描了两次。

0 投票
1 回答
17541 浏览

python - Python 在特定目录模式中搜索文件名模式

我如何使用 os.walk (或任何其他方式)以某种方式进行搜索,以便我可以在根目录下具有特定模式的目录下找到具有特定名称的文件

我的意思是,如果我有一个目录 d:\installedApps,在该目录下我有 a.ear、b.ear、... x.ear、y.ear、z.ear 目录以及同一级别的其他目录,我想只在根目录下的*.ear子目录下搜索文件模式web*.xml,而不遍历其他同级目录,我该怎么做?

我尝试了各种方法(一些使用此站点上的其他示例,例如 walklevel 示例等),但没有得到我想要的结果。

更新

我尝试使用此站点的 walkdepth 代码片段并尝试将其组合在嵌套循环中,但这不起作用

这是我试过的代码

0 投票
2 回答
2561 浏览

php - PHP realpath 无法阻止目录遍历

我收到了其他人的系统代码,该系统在您的浏览器中显示带有照片的文件夹。

例如,这是网站上可能的 url:

目前,您可以将“Cars”替换为 ../../../../../,这将愉快地显示 Linux 根文件夹。幸运的是,该网站目前处于离线状态。

我尝试使用 realpath 来解决这个问题。这是我到目前为止所拥有的:

我在第三行添加了 echo 以查看 URL 是什么。在上面的 url 中,一切都很好,并且 echo 输出了这个:

到目前为止,一切都很好。但是,如果我输入 /../../../../../../../../ 而不是“Cars”,则 $name 变为 / 并且页面仍显示根文件夹。英语不是我的第一语言,所以我可能会误解 realpath 的工作原理或它的作用。据我了解,它会从给定的 URL 中删除 ../ 的任何实例。

有人可以告诉我我做错了什么吗?