现在光是一个Web前端就有很多的***手法。而大多数***手法都是基于"客户端"存在的。但是很少有人注意到,所以就有了本文。

想要去找一个新***手法时,很多人大多都是研究代码(包括我一开始)。从代码里寻找漏洞。这种方法效率比较低下。所以有人喜欢用fuzzing来大规模的测试漏洞的存在(这个方法的确很不错,范围广,测试全,速度快),而大家别以为我找到一种类似fuzzing那样的技术,我还没有那个实力。这个方法只能说会让fuzzing的速度更快,更加的有效率。

想要挖掘一个新的漏洞,就先搞明白那个程序运转的原理机制。然后用图或者文字表达出来。因为服务端的漏洞比较少,我这里就不强调了,主要说说客户端的漏洞,因为客户端的问题是最多的。只要发现这个程序运转的过程中存在和客户端交互的情况,基本上就可以断定如果客户端没有做好过滤,那么就有很大的几率存在漏洞。

说了那么多,不来点事例,可能大部分人都听不懂。

我这里拿"url重定向***手法"来说明

什么是重定向,我这里举个例子。

a.cn缺钱了,问b.cn借钱,可是b.cn也没有钱,但是b.cn知道谁有钱,所以告诉a.cn,c.cn有钱,问他借。然后a.cn问c.cn借钱,c.cn把钱借给了a.cn。然后根据这个写出原理的顺序。

a.cn——b.cn——a.cn——c.cn——a.cn

这里我们可以看到本次程序运转的原理机制里,存在有客户端交互。那我们就把重点放到客户端a.cn上。

假设我们把b.cn回馈给a.cn的内容改成其他的会怎么样。

那么结果会变成下面这样。

a.cn缺钱,向b.cn借钱,b.cn没有钱,但知道c.cn有钱,则告诉a.cn,c.cn有钱,这时候,我们在这里截取数据包,把内容改成d.cn有钱。然后把数据包放行,那么a.cn收到了b.cn的回复,说他也没钱,d.cn有钱,然后a.cn问d.cn借。d.cn不鸟a.cn。则a.cn被活活饿死。原理顺序是

a.cn——b.cn——hacker——a.cn——d.cn——a.cn饿死,c.cn在这次成语运作中并没有参与进来

这样所造成的后果是a.cn凡是重定向的则全部失败。

说了那么多,总结下。

想要高效的挖掘漏洞,最好是把主要尽力放到客户端上,因为服务端有未知性,你很难精确的检测到,而客户端是对我们开放的,所以这就给我们制造了很多的机会。

最后用Zjmainstay做的比喻来结束本文。

就跟银行和客户一样,很多人愿意抢客户也不愿意抢银行

等钱拿出来了才抢,而不是去银行抢。