Linuxshell加密
這里以字元串123456為例子,它的md5密文值為:
這里以1.txt為需要被加密的文件。
一、 用oppnssl md5 加密字元串和文件的方法。
1. oppnssl md5 加密字元串的方法
a.手動輸入命令及過程如下:
#openssl //在終端中輸入openssl後回車。
OpenSSL> md5 //輸入md5後回車
123456 //接著輸入123456,不要輸入回車。然後按3次ctrl+d。
123456 //123456後面的就是密文了
解釋:為何在輸入123456後不回車呢?
是因為openssl默認會把回車符當做要加密的字元串中的一個字元,所以得到的結果不同。如果你輸入123456後回車,在按2次ctrl+d。得到的結果是:
OpenSSL> md5
123456
//因為openssl不忽略回車符導致的
b.或者直接用管道命令
# echo -n 123456 | openssl md5 //必須要有-n參數,否則就不是這個結果了。
解釋:為何要加-n這個參數?
-n就表示不輸入回車符,這樣才能得到正確的結果。如果你不加-n,那麼結果和前面說的一樣為:
//因為openssl不忽略回車符導致的
2.用openssl加密文件。
#openssl md 5 -in 1.txt
##################################################3
Openssl其他相關加密的命令參數:引自:實用命令:利用openssl進行BASE64編碼解碼、md5/sha1摘要、AES/DES3加密解密 收藏
一. 利用openssl命令進行BASE64編碼解碼(base64 encode/decode)
1. BASE64編碼命令
對字元串『abc』進行base64編碼:
# echo abc | openssl base64
YWJjCg== (編碼結果)
如果對一個文件進行base64編碼(文件名t.txt):
# openssl base64 -in t.txt
2. BASE64解碼命令
求base64後的字元串『YWJjCg==』的原文:
# echo YWJjCg== | openssl base64 -d
abc (解碼結果)
如果對一個文件進行base64解碼(文件名t.base64):
# openssl base64 -d -in t.base64
二. 利用openssl命令進行md5/sha1摘要(digest)
1. 對字元串『abc』進行md5摘要計算:echo abc | openssl md5
若對某文件進行md5摘要計算:openssl md5 -in t.txt
2. 對字元串『abc』進行sha1摘要計算:echo abc | openssl sha1
若對某文件進行sha1摘要計算:openssl sha1 -in t.txt
三. 利用openssl命令進行AES/DES3加密解密(AES/DES3 encrypt/decrypt)
對字元串『abc』進行aes加密,使用密鑰123,輸出結果以base64編碼格式給出:
# echo abc | openssl aes-128-cbc -k 123 -base64
U2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g= (結果)
對以上結果進行解密處理:
# echo U2FsdGVkX18ynIbzARm15nG/JA2dhN4mtiotwD7jt4g= | openssl aes-128-cbc -d -k 123 -base64
abc (結果)
若要從文件里取原文(密文)進行加密(解密),只要指定 -in 參數指向文件名就可以了。
進行des3加解密,只要把命令中的aes-128-cbc換成des3就可以了。
註:只要利用openssl help就可以看到更多的安全演算法了。
###############################################
二、 利用php的md5函數加密字元串
#touch a.php //創建a.php文件
#vi a.php //用vi 編輯a.php文件
將<?php echo md5(123456); ?>輸入進去後保存
#php a.php //運行a.php文件
顯示:
三、 利用md5sum命令
A.在linux或Unix上,md5sum是用來計算和校驗文件報文摘要的工具程序。一般來說,安裝了Linux後,就會有md5sum這個工具,直接在命令行終端直接運行。可以用下面的命令來獲取md5sum命令幫助 man md5sum
#md5sum –help
有個提示:「With no FILE, or when FILE is -, read standard input.」翻譯過來就是「如果沒有輸入文件選項或者文件選項為 - ,則從標磚讀取輸入內容」,即可以直接從鍵盤讀取字元串來加密。
利用md5sum加密字元串的方法
# md5sum //然後回車
123456 //輸入123456.然後按兩次ctrl+d.
顯示:
123456 紅色代表加密後的值
還可以用管道命令:
#echo -n '123123' | md5sum
或者寫成md5加密腳本,名字叫md5.sh,
將以下內容復制進腳本里:
#!/bin/bash
echo -n $1 | md5sum | awk '{print $1}'
保存後,給腳本執行許可權。
#sh md5.sh 123456
顯示:
B.其實也可以將文本放入文本文件,然後用md5sum 加密改文本,也可以得到字元串加密的值。過程如下:
#touch a.txt
#echo -n 123456 > a.txt //將123456寫進文本文件,不能丟了 –n參數,避免回車符干擾
#md5sum a.txt
顯示: a.txt
ctrl+d有兩個含義:
一是向程序發送文件輸入結束符EOF。
二是向程序發送exit退出指令。程序收到信號後具體動作是結束輸入、然後等待,還是直接退出,那就要看該程序捕獲信號後是如何操作的了。
md5sum屬於第一個含義。兩次strl+d了,第一次讀取EOF指令,再次捕獲就會當成exit指令。而shell一類的程序,會直接把ctrl+d解析為退出指令。
❷ linux shell 怎麼使用crypt函數
crypt是個密碼加密函數,它是基於DataEncryptionStandard(DES)演演算法。
crypt基本上是Onewayencryption,因此它只適用於密碼的使用,不適合於資料加密。
char*crypt(constchar*key,constchar*salt);
key是使用者的密碼。salt是兩個字,每個字可從[a-zA-Z0-9./]中選出來,因此同一密碼增加了4096種可能性。透過使用key中每個字的低七位元,取得56-bit關鍵字,這56-bIT關鍵字被用來加密成一組字,這組字有13個可顯示的ASCII字,包含開頭兩個salt。
crypt在您有自行管理使用者的場合時使用,例如會員網站、BBS等等。
範例一:crypt_word.c
#include
#include
#include
voidmain(intargc,char**argv)
{
if(argc!=3)exIT(0);
printf("%sn",crypt(argv[1],argv[2]));
}
編譯
gcc-ocrypt_wordcrypt.c-lcrypt
檢驗
請先看您的/etc/passwd,找一個您自己的帳號,看前面兩個字,那是您自己的salt。接下來輸入:
./crypt_wordyour_passwordsalt
看看它們是否相同(應該要相同,除非您加了cryptplugin或使用不同的crypt
function,例如shadow、pam,這種狀況下,加密字是不同的),另外檢驗看看他們是否為13個字。
您也可以利用Apache上所附的htpasswd來產生加密字做為驗證。
❸ linux shell逐行 md5
大家可以網路一下shell中for循環逐行讀數據與while逐行讀數據是不一致的;
建議使用下面的代碼去操作。
while read line; do echo $line | md5sum >> md5.txt; done < 1.txt
❹ linux反彈shell知識匯總
shell是滲透中常用的名詞,像getshell,webshell,反彈shell等等,都和shell相關。
網路解釋的shell:
在計算機科學中,Shell俗稱殼(用來區別於核),是指「為使用者提供操作界面」的軟體(命令解析器)。它類似於DOS下的command.com和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。
簡單說用戶通過殼訪問操作系統內核的服務,也就是由殼到內核,執行系統命令。
getshell:獲取到目標的命令執行許可權
webshell:指網站後門,通過web服務進行命令執行
反彈shell:把命令行的輸入輸出轉移到其它主機
1、webshell下執行命令不交互,為了方便提權或其它操作必須要反彈shell。
2、反彈shell相當於新增一個後門,當webshell被發現刪除後許可權不會丟失。
使用whereis命令去確定目標支持的反彈方法。
bash反彈是實戰中用的最多的方法
把命令拆開分析:
1、bash -i代表在本地打開一個bash
2、/dev/tcp/是Linux中的一個特殊設備,打開這個文件就相當於發出了一個socket調用,建立一個socket連接
3、>&後面跟上/dev/tcp/ip/port這個文件代表將標准輸出和標准錯誤輸出重定向到這個文件,也就是傳遞到遠程vps
4、遠程vps開啟對應的埠去監聽,就會接收到這個bash的標准輸出和標准錯誤輸出。
需要目標主機安裝了nc
使用其他版本的 nc
配合命名管道進行反彈:
首先使用socket與遠程建立起連接,接下來使用到了os庫的p2方法將標准輸入、標准輸出、標准錯誤輸出重定向到遠程,p2這個方法有兩個參數,分別為文件描述符fd1和fd2,當fd2參數存在時,就關閉fd2,然後將fd1代表的那個文件強行復制給fd2,在這里可以把fd1和fd2看作是C語言里的指針,將fd1賦值給fd2,就相當於將fd2指向於s.fileno(),fileno()返回的是一個文件描述符,在這里也就是建立socket連接返回的文件描述符,列印出來數值為3
0代表標准輸入、1代表標准輸出、2代表標准錯誤輸出、3代表重定向到遠程
接下來使用os的subprocess在本地開啟一個子進程,傳入參數「-i」使bash以交互模式啟動,標准輸入、標准輸出、標准錯誤輸出又被重定向到了遠程,這樣的話就可以在遠程執行輸入命令了。
需要php關閉safe_mode選項,才可以使用exec函數。
使用php的exec函數執行方法1反彈shell的命令
使用php的fsockopen去反彈shell
exec反彈
perl反彈
ruby反彈
lua反彈
通過上述命令反彈shell得到的shell並不能稱為完全交互的shell,通常稱之為'啞'shell。
通常存在以下缺點
因此有必要去獲取一個完全交互的shell。
1、在啞 shell 中執行python,使用pty模塊,創建一個原生的終端,命令如下:
運行完後
2、鍵入 Ctrl-Z暫停任務,切回到 VPS 的命令行中;在 VPS 中執行:
3、在啞 shell 中執行,得到一個完全交互的shell,支持命令補全、歷史命令查看、語法高亮、vim編輯等功能。
部分防護設備會對內外網傳輸流量進行審查,反彈shell執行命令都是以明文進行傳輸的,很容易被查殺。
因此需要將原始流量使用 openssl 加密,繞過流量審計設備。
1、首先vps上生成SSL證書的公鑰/私鑰對,信息懶得填,一直回車即可。
2、vps使用 OpenSSL 監聽一個埠
3、目標主機執行反彈加密shell
反彈成功,成功接收到ssl流量加密的shell。
http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
https://www.sohu.com/a/161766202_709042
https://www.freebuf.com/vuls/211847.html
https://www.freebuf.com/articles/system/178150.html
https://zhuanlan.hu.com/p/138393396
https://www.cnblogs.com/Dubing-ydfc/p/11749241.html
❺ linux的shell腳本,如何使用vi批量加密
vi是不能加密的哦,不夠可以使用其他程序進行加密的呢
這個需要編寫一個shell來加密文件的。
那就先看一下喔的網名吧, 然後++上啊,私聊給解決一下
❻ 如何傳遞參數給linux shell 腳本(當腳本從標准輸入而不是從文件獲取時)
sh 絕對路徑/xxx.sh 參數1 參數2 參數3........參數n
---------------------------------------------------------------------------------
如果你保存臨時文件的話,可以使用xargs
比如腳本文件為1.sh,而參數保存在args文件中,用一個命令得到參數內容
cat args
那麼最後可以這樣執行
cat args |xargs sh 1.sh
如果不打算保存臨時文件,那你只好在腳本中寫清楚要如何調用,參數有幾個。
比如你使用2.sh調用1.sh,在2.sh 中寫清楚
1.sh $arg1 $arg2這樣就可以了。
當然腳本中的arg1,arg2也可以是最初的第一個腳本調用傳遞進來的,也可以是硬編碼寫死的。
