通常我们的开发人员在开发过程中会特别注意到防止恶意用户进行恶意的注入操作,因此会对传入的参数进行适当的过滤,但是很多时候,由于个人对安全技术了解的不同,有些开发人员只会对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. 自己实现java中Iterator(迭代器功能)

    今天躺在床上忽然想到一个问题,迭代器的代码是如何实现的?于是乎不由自主的爬起来敲两行代码. List<String> list=new ArrayList<>(2); list ...

  2. MySQLroot密码的恢复方法

    MySQLroot密码的恢复方法 有可能你的系统没有 safe_MySQLd 程序(比如我现在用的 ubuntu操作系统, apt-get安装的MySQL) , 下面方法可以恢复 1.停止MySQLd ...

  3. Move-to-front(MTF) and Run-lenght encoding(RLE) algorithms

    mtf算法(关于该算法:https://www2.cs.duke.edu/csed/algoprobs/beta/bw1.html): #include <stdio.h> #includ ...

  4. linu后台执行py文件和关闭的后台py文件

    后台执行py nohup python xxx.py 关闭后台执行py 查看进程pid ps -aux|grep main.py 根据pid关闭关闭进程 kill -9 (pid)

  5. 卸载mysql时,提示libmysqlclient.so.16()(64bit) is needed by (installed) postfix

    卸载时,提示错误,用这个命令就可以rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64(这个是自己要卸载的版本) [root@unaryhost dev]# ...

  6. WinForm开发(2)——DataGridView控件(2)——C# dataGridview控件,怎么获取行数

    dataGridView1.Rows.Count;//所有行数dataGridView1.RowCount;//可见行数

  7. 7-10 多项式A除以B (25分)(多项式除法)

    7-10 多项式A除以B (25分)   这仍然是一道关于A/B的题,只不过A和B都换成了多项式.你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数. 输入格式: 输入分两行,每行给出 ...

  8. org.springframework.data.redis.RedisConnectionFailureException

    org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested ...

  9. 树形下拉框ztree、获取ztree所有父节点,ztree的相关方法

    参考:jQuery树形控件zTree使用小结 需求 添加.修改的终端需要选择组织,组织是多级架构(树状图显示). 思路 1.因为下拉框需要树状图显示,所以排除使用select做下拉框,改用input  ...

  10. PPT页面动画制作

    因为武汉新型冠状肺炎的影响,今年自从2月3号开工以来,就在家办公.我的任务刚好是安排做PPT,虽说之前做过PPT,但大家都知道,作为一个IT测试工程师,更多的是测试工作,只有在培训,还有年终汇报的时候 ...