剛才在網上搜東西,偶然發現下面這個程式,尤其是關於漏洞方面的注釋,很有用,就copy過來,以後有空再仔細研究一下.
verify_passwd.c
注意,這個範例讀取/etc/passwd的資料,不適用於使用shadow或已經使用pam
的系統(例如slackware,redhat及debian在不外加crypt plugin的狀況下,應
當相同)。此範例僅供叄考,做為了解crypt函式運作的情形,真正撰寫程式
時,應該避免類似的寫法。
#include
#include
#include
typedef struct account;
/* 注意! 以下的寫法,真實世界的軟體開發狀況下,千萬不要用! */
int acc_info(char *info,account *user)
int read_password(char *filename,account *users)
fclose(fp);
return n;
} void main(int argc,char **argv)
else strcpy(username,argv[1]); /* 這是超級大安全漏洞 */
if (argc<3) else strcpy(password,argv[2]); /* 這是超級大安全漏洞 */
n = read_password("/etc/passwd",acc);
for (i=0,done=0;i***) invalid;
new_string = (char*)malloc(len+1);
strcpy(new_string,incoming_username);
your_own_operations...
如此才能避免buffer overflow,萬萬不可濫做假設,切記切記,連許多數十年
經驗豐富的老手都會犯這個錯誤。
與crypt函式相關者尚有以下三個:
void setkey (const char *key);
void encrypt (char *block, int edflag);
void swab (const char *from, char *to, ssize_t n);
一般來說,除非您有特殊需求,你不會用到這三個。
關於CSDN的乙個安全漏洞
在瀏覽csdn的部落格是,偶然發現csdn的乙個安全漏洞,對於我們來可能沒有什麼攻擊的必要,但是如果不修復,還是有很大的隱患的,下面貼出來看看 如上圖所示,通常在web瀏覽頁面是,遇到不能訪問的頁面或者是目錄,程式應該給予乙個統一的錯誤提示,而且錯誤提示資訊必須要遮蔽所有可能造成攻擊的資訊。以上首先...
關於CSDN的乙個安全漏洞
在瀏覽csdn的部落格是,偶然發現csdn的乙個安全漏洞,對於我們來可能沒有什麼攻擊的必要,但是如果不修復,還是有很大的隱患的,下面貼出來看看 如上圖所示,通常在web瀏覽頁面是,遇到不能訪問的頁面或者是目錄,程式應該給予乙個統一的錯誤提示,而且錯誤提示資訊必須要遮蔽所有可能造成攻擊的資訊。以上首先...
關於CSDN的乙個安全漏洞
在瀏覽csdn的部落格是,偶然發現csdn的乙個安全漏洞,對於我們來可能沒有什麼攻擊的必要,但是如果不修復,還是有很大的隱患的,下面貼出來看看 如上圖所示,通常在web瀏覽頁面是,遇到不能訪問的頁面或者是目錄,程式應該給予乙個統一的錯誤提示,而且錯誤提示資訊必須要遮蔽所有可能造成攻擊的資訊。以上首先...