由漏洞联想到算法

前言:

 昨天在测试某研究院的系统的时候,发现一个漏洞,当时不知道如何去解决这个漏洞,于是乎 ,就凭猜想咯,在猜想的过程中

未能够找到证明这个猜想的证据,末了,就准备就寝了,左思右想,发现可以用算法的方式实现我的简单猜想。以下是截图



一.经过

1.这个系统的漏洞是什么呢?

         当时的情况是这样的,这是一个工资绩效表支出,人家要发工资了,然后在当前页面点击提交后,

           结果发现流程挂起了,即 流程不会走到下一步审批人中去,经过测试发现,在web端,只有

          当数据的行数大于等于7的时候,此漏洞才会触发,分析来,分析去,不知道是什么原因导致的,

          后来我就想,是不是由于两个或者两个以上的费用类别同时等于其所在行的项目呢?结果当然是否定的

          不信,你自己去上面截图看看就知道了。

 2.关于算法

        进来对于算法比较感兴趣,于是乎在睡觉的时候就想,直接用算法的方式准确知道是否存在我所说的导致漏洞存在

        的原因呢,以下是java写的关于是否存在------判断两个数组的同位元素是否相等,即是否存在数组a中的i元素

        于数组a中的j元素,且数组b中的i元素也等于数组b中的j元素 这样的情况

   

.结果

 1.废话不多说,直接上代码,和运行结果。一目了然



    package com;


       public class Math {

public static void main(String args[]){

int o[]={3,2,3,4,5,1};

    int  k[]={1,3,1,5,2,9};


Boolean result=isequal(o,k);

System.out.println("两个数组比较之后结果为"+result);

}

//判断两个数组的同位元素是否相等,即是否存在数组a中的i元素等于数组a中的j元素,且数组b中的i元素也等于数组b中的j元素 
public  static Boolean isequal(int a[],int b[]){

//int a[] = null;

  //int b[]=null;
    
    Boolean iscom=false;

int i,j;

for ( i = 0; i < a.length; i++) {

for (j = 0; j < i; j++) {

if(a[j]==a[i]){

if(b[j]==b[i]){

iscom=true;

}
}
}

}
return iscom;

}


}






    虽然昨天的漏洞没有得到结局,但是我还是很开行哈偷笑

    从图片中可以一下得到测试的结论,当然了咯,关于算法,我们还有很多的东西需要学习,因为它已经脱离于编程

    语言之外了,或者这就是算法的魅力之所在了。








猜你喜欢

转载自blog.csdn.net/SZ_521/article/details/80929870