当我阅读 How do I use shell variables in an awk script? 的答案时,我不确定如何正确编写使用 shell 变量的特定 awk 命令的脚本。 .
接受的答案演示了如何在 awk
命令中插入一个 shell 变量很容易被恶意代码注入(inject),虽然我能够重现该演示,但我找不到同样的问题以下两个命令:
#HWLINK=enp10s0
ip -o route | awk '/'$HWLINK'/ && ! /default/ {print $1}'
ip -o route | awk "/$HWLINK/"' && ! /default/ {print $1}'
因此,主要问题是这些(或两者)是否存在漏洞。
第二个问题是首选哪种形式。我试过 ip -o route | awk -v hwlink="$HWLINK"'/hwlink/&& !/default/{print $1}'
但这不起作用。
附注这是一个重构;原始命令是 ip -o route | grep $HWLINK | grep -v 默认 | awk '{print $1}'
。
最佳答案
当然,两者都很脆弱,第一个不那么脆弱。
这打破了你的第二行:
HWLINK="/{}BEGIN{print \"Your mother was a hamster and your father smelt of elderberries\"}/"
它不会破坏您的第一行的唯一原因是,为了能够注入(inject)到第一行,它不能包含空格。
HWLINK="/{}BEGIN{print\"Your_mother_was_a_hamster_and_your_father_smelt_of_elderberries\"}/"
我看到你已经有了正确的语法来使用:)
关于linux - 这些 awk 命令容易受到代码注入(inject)的攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56591462/