通常我们的开发人员在开发过程中会特别注意到防止恶意用户进行恶意的注入操作,因此会对传入的参数进行适当的过滤,但是很多时候,由于个人对安全技术了解的不同,有些开发人员只会对get,post这种方式提交的数据进行参数过滤。
 
但我们知道,很多时候,提交数据并非仅仅只有get\post这两种方式,还有一种经常被用到的方式:request("xxx"),即request方法
通过这种方法一样可以从用户提交的参数中获取参数值,这就造成了cookie注入的最基本条件:使用了request方法,但是注入保护程序中只对get\post方法提交的数据进行了过滤。
 
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对象的具体方法进行获取。
 
cookie是代表身份的字符串。网站根据cookie来识别你是谁,如果你获取了管理员的cookie,你可以无需密码直接登录账号。
cookie本身机制就不安全。
检测是否存在cookie,不存在,服务器会给你一个。如果没有登录,那么cookie就是游客状态。如果你登录了AD账号,那么那个cookie代表的就是AD账号。
可通过此方法获取参数:火狐浏览器查看元素->存储器-》cookie->+->名称改为id->值改为zkaq->刷新页面
$_REQUEST:在PHP高于5.4的版本不会获取cookie,cookie注入一般在ASP的站点比较多。
注意点:cookie传参需要URL编码。
可以通过很多方法设置cookie:方法一:抓包、改包,添加一个cookie字段在请求里面。
                                               方法二:用javascript来设置cookie。具体操作方法:打开控制台,输入document.cookie,回车(也可用hackbar)
escape():对字符串进行编码,这样就可以在所有的计算机谁给你读取改字符串。
 
Access数据库很老,严格来说只有一个库,没有系统自带库,一般来说账号密码就是在admin表的username字段和password字段。
用sqlmap:-u  "URL"   --cookie "id=xxx"    --level 2
cookie注入不知道库名怎么办:就一库,没必要知道。
不知道表:exist()函数,eg:1.exists(select * from news)2.爆破
知道表名不知道列名(字段名)的时候可以考虑使用偏移注入
 
用select 表名.* from 表名 可以查出表
 
总的来说和联合查询显错注入很像
 
传统的偏移注入需要用到内连接
 
 
 
找注入点思路:瞎几把乱点找数据库传参,像什么图片啊、文章啊都可以
然后尝试注入
 
使用cookie的偏移注入时,需要将cookie的值用url编码加密一次
可以使用Javascript的document.cookie="id="+escape("105 order by 1");
直接输入正常字符串,通过escape函数来自动生成url编码过的cookie值
 
在设置完cookie传参之后,去掉url地址中的?传参,同样可以访问到该页面
以下是原网页
 
以下是构建了cookie的(注意地址栏对比)
 
也可以通过抓包修改cookie值
在Accssess数据库中,无法使用mysql数据库中的select 1,2,3…来直接猜显示点
在这个时候就需要穷举,穷举表,自己猜表然后用select 1,2,3… from 表 的方式来爆显示点
只要数据库存在这个表,那就可以显示表
比如说(已知这张表有26个字段)
 
105 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 from admin
有显示数字,说明这张表存在
表名不存在的时候直接报错
而有一些输出点是比较隐晦的,不直接显示在页面上,比如说图中的未加载图片,其实它也是一个输出点,在源码中的<img src='25'>会显示
 
现在已经知道有个admin表了,可以使用前面提到的admin.*了
但是在直接select 1,2,3,admin.*之前有一件事很重要,就是猜admin表的字段数。因为当你把admin.*插入select 语句时,要小心union select语句前后字段数不一致。也就是说当admin表字段数大于等于当前表字段数的时候,无法进行偏移注入,要么GG,要么找到一个字段数更多的表来偏移注入。
现在我们已知当前表的字段数是26,那么如果是union select 1,2,3…,24,25,26,admin.*的话,就相当于是select 26 union select 26+admin表字段数,这样联合查询前后表字段数不一致肯定会报错,现在就是猜admin表的字段数,猜是1个字段时:…25,26 union select 1,2,3…,24,25,admin.*——报错
然后猜admin表有两个字段:…25,26 union select 1,2,3…,24,admin.*——报错
然后猜admin表有三个字段
以此类推
……
……
最后试到union select 1,2,…10,admin.*的时候正常显示,说明admin表有16个字段
 
然后将admin.*平移到显示点,将后面的位置填上:
union select 1,2,3,4,5,6,admin.*,23,24,25,26
语句执行后,在显示点上显示的就是admin表中第一个字段的数据
查询admin表中第二个字段的数据时,再平移一位union select 1,2,3,4,5,admin.*,22,23,24,25,26
以此类推
 
通常用户表的设置是id,name,password,。。。这样的
而且通常遇到明显加密过的很有可能是password,这个时候用md5解密得到密码
 
 
 
也可以用火狐hackbar直接进行cookie注入,但注意需要URL加密。
 

cookie注入的更多相关文章

  1. 3.羽翼sqlmap学习笔记之Cookie注入

    Cookie注入: 1.假设这个网址"http://www.xxx.org/Show.asp?id=9"存在注入点.2.sqlmap命令提示符下输入下列内容进行跑表. sqlmap ...

  2. 注入语句详解(get注入,cookie注入,搜索型注入等)

    注意:对于普通的get注入,如果是字符型,前加'   后加 and ''=' 拆半法 ###################################### and exists (select ...

  3. cookie注入讲解

    我们首先还是来看看中网景论坛的最新版本"(CNKBBS2007)中网景论坛2007v5.0 "官方下载地址" http://www.cnetking.com/websys ...

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

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

  5. 手工、工具分别实现cookie注入

    最开始的判断access类型的网站注入点可以用“1 and 1=1”来判断. 不过现在的网站基本上被挡住了.之后呢,可以考虑cookie注入. Dim Tc_Post,Tc_Get,Tc_In,Tc_ ...

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

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

  7. 第二次靶场练习:cookie注入

    cookie注入 本文章目的是对相关的黑客内容进一步了解,如有人违反相关的法律法规,本人概不负责 一.学习目的: 利用手工注入网站 利用sqlmab注入 二.附件说明 靶场网址:http://120. ...

  8. access数据库之cookie注入

    本来今天想写post注入的,但这几天正好看到chookie的注入的视频.就先写一下这个.大家对于我说的get post cookie注入可能会认为SQL注入就这几种方式.这概念是错的.Get post ...

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

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

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

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

随机推荐

  1. webpack中使用babel

    step one: https://babeljs.io/setup Choose your tool (try CLI) select webpack Step two: npm install - ...

  2. Protobuf协议--java实现

    Protobuf协议,全称:Protocol Buffer 它跟JSON,XML一样,是一个规定好的数据传播格式.不过,它的序列化和反序列化的效率太变态了…… 来看看几张图你就知道它有多变态.  pr ...

  3. layer.open({}) 子页面传参并调用父页面的方法

    闲话少说先看效果!!! 说明适用场景:在a.jsp页面,点击查看一个文件,layer.open弹出b.jsp页面,在b.jsp页面可以修改文件的名称(其实是去改了数据库),但是关闭弹窗的后,要求不刷新 ...

  4. mark mark mark

    编译并使用静态lib---->>>>转自:Walkthrough: Creating and Using a Static Library (C++) 跟踪内存分配:http: ...

  5. Java面向对象编程 -4

    声明static属性 static 是一个关键字,这个关键字主要是用来定义属性和方法. static内存分析 在正常开发之中每一个对象都要保存有各自的属性 所以此时程序没有问题 但是如果country ...

  6. leetcode 0211

    目录 ✅ 1217. 玩筹码 描述 解答 c java py ✅ 206. 反转链表 描述 解答 c java py ✅ 922. 按奇偶排序数组 II 描述 解答 c 双指针soldier tddo ...

  7. Binary Heap(二叉堆) - 堆排序

    这篇的主题主要是Heapsort(堆排序),下一篇ADT数据结构随笔再谈谈 - 优先队列(堆). 首先,我们先来了解一点与堆相关的东西.堆可以实现优先队列(Priority Queue),看到队列,我 ...

  8. jmeter download historyList

    https://archive.apache.org/dist/jmeter/binaries/ 反馈,问题和评论应发送到Apache JMeter Users 邮件列表. 有关更多信息, 请访问Ap ...

  9. msbuild发布web应用程序

    aspnet_compiler.exe 只能编译 网站,web应用程序项目使用下面的命令即可. msbuild C:\Jenkins\jobs\KM_ERP_WEBAPP\workspace\KMWe ...

  10. 最全Python学习路线图【2020最新版】

    2020年最新的python学习大纲,专为python高薪打造另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而 ...