问题标签 [ifs]
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.
bash - bash: `read` 似乎不尊重 IFS
我的印象是设置IFS
会改变将read
一行文本分隔为字段时使用的分隔符,但显然我遗漏了一些东西:
为什么不IFS=','
将read
解析dd,ee,ff
为三个字段?
c - 使用 LD_PRELOAD 和 IFS 利用 SUID 文件
我一直在阅读有关 IFS 开发和LD_PRELOAD
通过覆盖函数来提升权限的信息。尽管这是两个完全不同的问题,但我决定将它们一起发布并希望这不是问题。虽然这两个都很老,但我被告知它们仍然可以用于特权升级,我很想研究一下。但是,我遇到了一些问题。
因此,让我们从创建 SUID 文件 /tmp/suid 开始。
这调用/bin/date
. 这个想法是我们可以更改内部字段分隔符并欺骗文件以它当前拥有的权限运行其他东西。这可以通过使一个名为bin的新文件包含攻击者放置在自定义位置的恶意代码来完成(或者可以吗?)。然后我们更改$PATH
变量并使其首先在我们的自定义路径中搜索位置,我们的恶意伪造二进制文件所在的位置。然后通过将内部字段分隔符更改为“/”,而不是运行/bin/date
程序将/tmp/fakepath/bin
使用参数日期运行,这可能会触发权限升级。
当我尝试描述 dankalia.com 的方法时,它失败了。/bin/date
反而被执行。如果我只是bin date
在控制台中输入恶意二进制文件,它确实会启动,但在通过/tmp/suid
.
我认为该漏洞已被修补,并且它只是忽略了 IFS 变量,但随后关于 stackoverflow 的帖子让我感兴趣。(C:IFS System() 漏洞)。任何人都可以向我确认这是否有效,以及我做错了什么?谢谢。
至于LD_PRELOAD
,我会保持相当简单。
使用以下命令行进行编译:
puts
然后,使用预加载技巧覆盖该函数:
这工作得很好。但是,在处理 SUID 文件时以及当我们谈论权限提升时,这不会发生。LD_PRELOAD
不适合 SUID 文件,这是有充分理由的。我被告知“你可以让它工作,但它很难”。想法?
在此先感谢,很抱歉提出这么长的问题。
bash - 在 bash 脚本中使用多字符分隔符
我有一个文本文件,其中数据的形式为:
有多个此类文件。我必须阅读所有这些文件并制作一个包含以下表单条目的 csv 文件:
其中每一行对应一个txt文件。
我正在编写一个 bash 脚本来从这些数据中生成 CSV 文件。
我只想从文本文件中读取数字。
对于我尝试使用的第一行
但它通过使用空格也作为分隔符以及':'来分割线
当我使用
在我不想要的 150 前面打印了一个额外的空间。
我该怎么做呢?
同样在第二行中,我想使用“is”作为分隔符。是否允许?
谢谢
bash - bash中查询字符串的关联数组?
如何从 Bash 中的查询字符串中获取关联数组?- 试图:
c++ - C++ 使用文件、数组和计数器
我有一个家庭作业问题,我已经完成了大部分,但我现在完全卡住了。任务是读取一个由两列数字组成的文件,这些数字代表一场音乐会还剩多少座位,有多少人买了票。ex: 120(容量) 90(购票) 140(容量) 155(购票) 演唱会可能超卖,所以我需要阅读文件并弄清楚有多少演出:不到 70%,70% 到 90 之间% 满,在 90% 和 100% 之间
我将两列都加载到 2 个数组中。这是给我带来麻烦的代码片段:
我遇到的问题是百分比,因为我的计数器输出为 0。我想知道的是你如何保持每一行的计数。例如说 5 行都低于 70% 满,我如何确保它读取整个文件并在每个文件之后添加到计数器。
arrays - Bash:使用 IFS 将数组连接成字符串
有人可以解释这里发生了什么。所有这些都在同一个 shell 中连续执行。
到目前为止,一切都很好。
没关系,扩展发生在整行执行之前。
同样在这里,扩展首先发生,并x
获得了该值。
但是${array[*]}
改变了,改变是永久的。
好的,这很正常,我认为 - 原始默认IFS
值用于扩展此分配中的数组变量。
但这对我来说完全没有意义。首先,IFS
这里没有使用默认值。其次,赋值x="${array[*]}"
并没有像以前那样影响值${array[*]}
,在IFS=/ x="${array[*]}"
.
linux - Linux bash 字符串拆分在单引号上使用 IFS
关于 Linux bash 中的 IFS 字符串拆分和单引号转义有很多已回答的问题,但我发现没有人加入这两个主题。偶然发现这个问题,我得到了一个奇怪的(对我来说)行为,代码如下所示:
(bash 脚本块)
发生的情况是,数组的echo -ed 元素实际上包含我需要的子字符串(因此导致我认为\' IFS 是正确的),而for循环返回在空格上拆分的字符串。
有人可以帮助我理解为什么同一个数组(或者我认为同一个数组)的行为是这样的吗?
bash - bash 中的奇怪之处:heredoc 内部的不同行为
我在使用 bash 脚本时遇到了一个奇怪的问题。重现它的最小代码在这里:
预期的输出是:
但我得到:
我在这里想念什么?
更新:我的 Mac (3.2.48) 上的 bash 按预期工作。我的 debian stable(4.2.37(1)-release)上的 bash 给出了所描述的奇怪之处。
shell - 取消设置 shell 脚本的 IFS 值
在我的用例中,我想将 的值更改为IFS
已知的分隔符 ( -
)。我尝试了以下方法:
当使用例如-a b -c d
作为输入字符串时,我希望输出是
但是,我得到的是
我在AIX
。
arrays - 为什么我的字符串不能很好地分割成一个数组?
我有那个 bash 脚本,可以将 的输出读git show
入一个数组。
首先,我使用以下语句创建一个字符串:
这给了我想要的模式:
我可以确认生成的字符串不包含意外|
位置的字符。
接下来,我想将字符串拆分为它的字段,如将字符串拆分为 Bash 中的数组:
当我现在查看时FIELDS
,只有前两个元素被填充,但其他元素是空的:
我究竟做错了什么?为什么最后三个数组元素为空?