CanMeng'Blog - 一个WEB安全渗透的技术爱好者

不积跬步,无以至千里;不积小流,无以成江海,“后悔过去,不如奋斗将来”

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


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

---------------------

 

 

评论
热度 ( 3 )
  1. 共1人收藏了此文字
只展示最近三个月数据

© CanMeng'Blog - 一个WEB安全渗透的技术爱好者 | Powered by LOFTER