| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 772 人关注过本帖
标题:[原创]找找漏洞
只看楼主 加入收藏
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
 问题点数:0 回复次数:9 
[原创]找找漏洞
[attach]901[/attach]
搜索更多相关主题的帖子: 漏洞 
2004-10-01 02:06
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
看看,花了好长时间才完成的,一个小东西!帮找找漏洞,谢谢!

2004-10-01 02:21
牛虻
Rank: 1
等 级:新手上路
威 望:1
帖 子:472
专家分:0
注 册:2004-10-1
收藏
得分:0 
对8起啊,好象进错房间了

土冒
2004-10-01 12:03
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
晕,无人问津……

2004-10-02 00:30
ohyeahok
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-9-30
收藏
得分:0 

试了,没有问题啊,不知道大大说的漏洞是指什么?

不正死机啊或者什么吗

2004-10-02 02:43
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

不是的,是指有什么BUG,比如说,修改密码不成功什么的,注册两个相同的帐号等等!


2004-10-02 02:55
bcomer
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2004-9-13
收藏
得分:0 

一个挺好的程序

如果一定要说有什么漏洞的话,我觉得是

容错处理不好,我乱输入点什么就可以进入死循环.

还有我想看看这个程序的源文件,和版权无关,只想学习一下,

可以吗?

方便的话打包上来,或是发到邮箱里.

谢谢先,

2004-10-02 09:39
ohyeahok
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2004-9-30
收藏
得分:0 

我想在除了输名字和密码时,其它时候每步都加上验证是否是数字这步吧

我刚学不知道说的有没有错

2004-10-02 10:20
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 
以下是引用bcomer在2004-10-02 09:39:41的发言:

一个挺好的程序

如果一定要说有什么漏洞的话,我觉得是

容错处理不好,我乱输入点什么就可以进入死循环.

还有我想看看这个程序的源文件,和版权无关,只想学习一下,

可以吗?

方便的话打包上来,或是发到邮箱里.

谢谢先,

这个问题是不是在进行数据处理的时候产生的啊?

如果你按照步骤一个一个的输入,输入一个数按一次回车,这样就不会出现死循环。

其实代码挺简单的,都是基本知识的综合运用。


2004-10-03 02:26
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

代码有点长,我又没加注释:

#include<stdio.h> #include<stdlib.h> #include<string.h> #define M 20 #define L 100 struct aa {char name[M]; char word[M]; }user[L]; int n=0; int jia() {int a,b; randomize(); a=random(100); randomize(); b=random(100); printf("%d+%d=",a,b); return a+b; } int jian() {int a,b; while(2) {randomize(); a=random(100); randomize(); b=random(100); if(a>=b) break; } printf("%d-%d=",a,b); return a-b; } int chen() {int a,b; randomize(); a=random(9)+1; randomize(); b=random(9)+1; printf("%d*%d=",a,b); return a*b; } int chu() {int a,b,c; while(3) {randomize(); a=random(82); randomize(); b=random(9)+1; if(a>=b) break; } c=a%b;a=a-c; printf("%d/%d=",a,b); return a/b; } void math() {int a,b,n,i;float s=0,k; clrscr(); printf("\t\tThe Math Practice\n"); printf("\n\nHow many practise do you want to do?\n"); scanf("%d",&n);k=100.0/n; printf("OK,every practise %.2f'\n\n",k); for(i=1;i<=n;i++) {printf("practise %2d: ",i); randomize(); a=random(4); switch(a) {case 0:b=jia();break; case 1:b=jian();break; case 2:b=chen();break; default:b=chu(); } scanf("%d",&a); if(a==b) {printf("OK,very good!\t +%.2f'\n\n",k); s=s+k;} else printf("Sorry,it's wrong!\n\n"); } printf("\n\nThe totall=%.2f\n'",s); printf("\nPress any key to return."); getch(); } void getpassword(char p[]) {unsigned i=0,j;int a,b; while((j=getch())!=13&&i<M-1) {a=wherex();b=wherey(); if(j==8) {if(i>0) {gotoxy(a-1,b);i--; clreol();continue;} else continue;} p[i++]=j; printf("*"); } p[i]='\0'; printf("\n"); return; } void list() {int i,j; clrscr(); printf("\n\n"); for(i=1;i<10;i++) {for(j=1;j<=i;j++) printf("%d*%d=%d\t",j,i,j*i); printf("\n"); } printf("\n\nPress any key to return.\n"); getch(); return; } int save() {FILE *fp; int i; if((fp=fopen("n_file","wb"))==NULL) {printf("Can not open file.\n"); return 0; } if(fwrite(&n,sizeof(int),1,fp)!=1) {printf("Write error!\n"); return 0; } fclose(fp); if((fp=fopen("u_file","wb"))==NULL) {printf("Can not open file.\n"); return 0; } for(i=0;i<n;i++) if(fwrite(&user[i],sizeof(struct aa),1,fp)!=1) {printf("User write error!\n"); return 0; } fclose(fp); return 1; } int load() {FILE *fp; int i; if((fp=fopen("n_file","rb"))==NULL) {printf("Can not open 'n_file'.\n"); return 0; } if(fread(&n,sizeof(int),1,fp)!=1) {printf("'n_file read error!\n"); return 0; } fclose(fp); if((fp=fopen("u_file","rb"))==NULL) {printf("Can not open 'u_file'.\n"); return 0; } for(i=0;i<n;i++) if(fread(&user[i],sizeof(struct aa),1,fp)!=1) {printf("'u_file' read error!\n"); return 0; } fclose(fp); return 1; } int quit() { char c; if(save()!=1) {printf("The data not save.\n"); printf("Do you want to quite(y/n)?"); c=getchar(); if(c=='y'||c=='Y') return 0; else return 1; } else return 0; } int textn(char *p) {int i; for(i=0;i<n;i++) if(strcmp(p,user[i].name)==0) break; if(i>=n) i=-1; return i; } int textw(char *p,int i) { return strcmp(p,user[i].word)==0?1:0; } int text(char *p,char *q) {int i,j,k=0; i=textn(p); if(i>=0) {j=textw(q,i); if(j==1) k=1; else printf("The password error!\n"); } else printf("The user name is not zhuce.\n"); return k; } void zhuce() { char a[M],b[2][M]; int i; clrscr(); printf("\tCreate A New User\n\n"); if(n>=M) {printf("The user is full!\n"); printf("Press any key to return.\n"); getch(); return;} printf("Input username:"); scanf("%s",a); printf("Input password:"); getpassword(b[0]); printf("Input password:"); getpassword(b[1]); i=textn(a); if(i>=0) printf("The user name had be used!\n"); else if(strcmp(b[0],b[1])==0) {strcpy(user[n].name,a); strcpy(user[n].word,b[0]); n++; printf("zhuce sucessfull!\n"); } else printf("The two password is not same.\n"); printf("\n\n\nPress any key to return.\n"); getch(); return; } void other() {int i,flag=1; clrscr(); while(2) {clrscr(); printf("\t\tThe Other\n\n"); printf("1.A usefull list.\n"); printf("2.Some math practice.\n"); printf("3.Exit.\n"); while((i=getch())!=0) if(i>='1'&&i<='3') break; switch(i) {case '1': list(); break; case '2': math(); break; default:flag=0; } if(flag==0) break; } printf("\n\nPress any to return.\n"); getch(); return; } void sum(int *p,int k) {int i,s=0; for(i=0;i<k;i++) s+=p[i]; printf("The sum=%d .\n",s); return; } void sort(int *p,int k) {int t,i,j; for(i=0;i<k-1;i++) for(j=i+1;j<k;j++) if(p[i]>p[j]) {t=p[i]; p[i]=p[j]; p[j]=t;} printf("After sort:\n"); for(i=0;i<k;i++) printf("%6d",p[i]); printf("\n"); return; } void min1(int *p,int k) {int i,t=p[0]; for(i=1;i<k;i++) if(t>p[i]) t=p[i]; printf("The min=%d .\n",t); return; } void max1(int *p,int k) {int i,t=p[0]; for(i=1;i<k;i++) if(t<p[i]) t=p[i]; printf("The max=%d .\n",t); return; } void everage(int *p,int k) {int i;float s=0; for(i=0;i<k;i++) s+=p[i]; s=s/k; printf("The everage=%.2f .\n",s); return; } void process() {int a[100],b,i,k,flag=1; while(2) {clrscr(); printf("\tThe Data Process System\n\n"); printf("\n\nHow many numbers do you want to process?\n"); scanf("%d",&b); if(b<=0||b>100) printf("Input error!\n"); else break; } printf("Input the numbers:\n"); for(i=0;i<b;i++) {printf("%2d :",i+1); scanf("%d",&a[i]);} printf("\n\nOK,press any key to continue.\n"); getch(); clrscr(); while(3) {clrscr(); printf("\tThe Data Process System\n\n"); printf("0.Exit.\n"); printf("1.Sum.\n"); printf("2.Sort.\n"); printf("3.min.\n"); printf("4.max.\n"); printf("5.average.\n\n\n\n"); while((k=getch())!=0) if(k>='0'&&k<='5') break; switch(k) {case '0': flag=0;break; case '1': sum(a,b);break; case '2': sort(a,b);break; case '3': min1(a,b);break; case '4': max1(a,b);break; default:everage(a,b); } if(flag==0) break; printf("\n\nPress any key to continue.\n"); getch(); } printf("\nPress any key to return.\n"); getch(); return; } void password() {int i,j; char a[M],b[M],c[2][M]; clrscr(); printf("\t\tModify Password\n\n"); printf("Input username:"); scanf("%s",a); printf("Input password:"); getpassword(b); printf("New password:"); getpassword(c[0]); printf("New password:"); getpassword(c[1]); i=text(a,b); if(i) {if(strcmp(c[0],c[1])==0) {j=textn(a); strcpy(user[j].word,c[0]); printf("\nOK,modify password success!\n"); } else printf("The two password is not same.\n"); } printf("\n\nPress any key to return.\n"); getch(); return; } void denlu() {char a[M],b[M]; int i,k,flag=1; clrscr(); printf("\t\tDen Lu\n\n"); printf("Input username:"); scanf("%s",a); printf("Input password:"); getpassword(b); i=text(a,b); if(i) {printf("Load successfull!\n"); printf("\n\nPress any key to continue.\n"); getch(); clrscr();} while(i) {clrscr(); printf("%s : Welcome to use this program.\n\n\n",a); printf("1.The data process system.\n"); printf("2.Others.\n"); printf("3.Exit.\n"); while((k=getch())!=0) if(k>='1'&&k<='3') break; switch(k) {case '1': process();break; case '2': other(); break; default: flag=0; } if(flag==0) break; } printf("\n\n\nPress any key to return.\n"); getch(); return; } void main() {int i,flag=1; load(); while(1) {clrscr(); printf("\t\tA Small Program\n\n"); printf("1.Create a new user.\n"); printf("2.Denlu.\n"); printf("3.Modify password.\n"); printf("4.Close this program.\n"); while((i=getch())!=0) if(i>='1'&&i<='4') break; switch(i) {case '1':zhuce();break; case '2':denlu();break; case '3':password();break; default:flag=quit(); } if(flag==0) break; } printf("\n\n\nThanks for your using!\n"); printf("\nPress any key to close.\n"); getch(); printf("You can close this window.\n"); }


2004-10-03 02:30
快速回复:[原创]找找漏洞
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016871 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved