本来今天想写post注入的,但这几天正好看到chookie的注入的视频。就先写一下这个。大家对于我说的get post cookie注入可能会认为SQL注入就这几种方式。这概念是错的。Get post等注入意思是在get post cookie传递数据的地方进行拼接。你们可以用burpusite这款软件抓包来看自己的注入点是在什么地方。

Cookie注入是有前提的。条件1是:程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤。条件2是:在条件1的基础上还需要程序对提交数据获取方式是直接request("xxx")的方式,未指明使用request对象的具体方法进行获取。Request括号中的数据”xxx”你可以理解为页面上写了什么内容拼接进来就是什么内容,没有进行过滤。

进入正题,先让我们看一下如何判断一个网站是否可以cookie注入吧。我这里用的是网上很多通用的方法。靶场用的是掌控安全免费靶场的第二题。

只需要把url中的地址改为javascript:alert(document.cookie="id="+escape("171")); 然后回车,再访问没有id的源网址就可以了。如果页面正常说明可以cookie注入,如果不正常说明不行。现在来一次演示并且抓包看一下什么是我口中的cookie注入吧。

首先更改url,用javascript语句得到相关参数。回车后会弹出一个框说明你语句成功了。

接下来要做的就是将源网址http://120.203.13.75:8001/shownews.asp?id=171 后面的id=171删去并且回车,因为这个参数id已经获取至cookie中了。

你会发现这个界面和之前的一模一样。证明这个网页是可以cookie注入的。现在让我们抓取上一步提交的数据吧, 看看网页时如何请求的。

再让我们抓取一个http://120.203.13.75:8001/shownews.asp?id=171请求的参数来对比加深理解。

可以很明显的看到下面这张图中的id=171有两处。而cookie注入中只有cookie后面这一处。这时候可能有同学会问,既然GET后面也有id=171,那么为什么还要用cookie注入呢?但是同学们别忘了前提的第一点,get注入被过滤了,那里没有办法用and什么的注入,而cookie可以接收id=171等数据且不被过滤and等关键字,所以用cookie注入。(对这前提我还不是特别理解,后期会好好深究)

这时候可能有同学会不信,那我就用get注入试试看。再用同样的语法拼接进cookie注入来对比对比吧。

使用命令http://120.203.13.75:8001/shownews.asp?id=171 and 1=1

这里显示传参错误!明显不行,这里看cookie拼接试试。

发现是可以的,现在同学们相信这个是cookie注入了吧。接下来的注入过程就和之前的一样了。在注入中使用其他命令去尝试吧骚年。

本来要上传了,差点忘记了一点。这靶场的数据库是access,而我上一篇章那第一题用的靶场是mysql,上一章节也介绍了mysql数据库的架构。不懂得可以自己尝试装一遍,多打几遍命令便记住了。这里的access和mysql比有些特殊。access数据库是只有一个库的,所以也就不存在像mysql数据库一样通过查询informaion库中的数据来寻找数据了。

有同学可能在好奇 ,你怎么知道哪些哪些是mysql数据库的,哪些是access数据库的呢。我是这样理解的。首先我们用order by 函数查看有多少“显示位”。

我先猜11。

发现用11不行,那我用10呢?

发现10是可以的,按照我之前mysql注入中的过程应该拼接and 1=2 union select 1,2,3,4,5,6,7,8,9,10 了。但是这句话在access这里行不行呢?输入语句javascript:alert(document.cookie="id="+escape("171 and 1=2 union select 1,2,3,4,5,6,7,8,9,10"));

发现错误,这时候应该会有人问为什么不行,不是和之前mysql用的语句的一模一样的么?这就是mysql和access的一个区别了。如果想要网页回显自己输入的数据,select语句后面必须使用from xxx(数据库中的某张表)只有这样才可以回显。让我来试一下吧。

有回显了吧?这时候有没有同学会问你为什么会from admin 而不是其他sadxc什么乱七八糟的表名呢。因为。。。我看了答案呀!嘿嘿,如果我不知道表名也是回显不出来的。而这个表名需要我们去猜哦,不仅表名需要去猜,字段名也需要猜哦。而在这题中内容可以通过代码在显示位中回显出来哦,先让我们猜解下字段吧。用函数and exists (select biaoming  from admin) ——猜列名。

先使用javascript:alert(document.cookie="id="+escape("171 and exists (select user_name from admin) "));

发现不行,证明没有这个列字段,所以语句不成立。用javascript:alert(document.cookie="id="+escape("171 and exists (select username from admin) "));试试。

看,猜对了。像username这种列字段什么的,都是很多人通用的。你们可以去看一下爆破字典里面,列举的都是很多常用的列字段名。

在这靶场中因为有回显位,所以我们只需要将列字段名写入就可以会显出来了。图中显示位是2,3,7,8,9。在任意的位置上写上列字段名username和password(用之前的方法猜)。javascript:alert(document.cookie="id="+escape("171 and 1=2 union select 1,username,password,4,5,6,7,8,9,10 from admin"));

看账号密码就这样爆出来了。这就是联合查询法。

我在这里还想使用逐字猜解法,这种方法可能会在盲注中使用。这方法需要自己去用函数将每一位猜出来。先猜内容有几位,再用函数猜内容的第几位是什么,比如内容第一个字母是a,它的acall码是97。那就用这个函数(select top 1 asc(mid(username,1,1)) from article_admin)=n 如果你输入的n=97那么这个函数成立,页面回显成功,证明第一位字母是a。将每一位猜出来之后就得到最后的结果了。一般这种都是用sqlmap软件去爆破的。(sqlmap的使用我以后会更)。

口说无凭来操作一遍吧!

先使用函数and (select top 1 len(username ) from admin)=n ,n是自己要猜的第一行的位数。我这里猜个3试试。使用命令javascript:alert(document.cookie="id="+escape("171 and (select top 1 len(username ) from admin)=3 "));

发现自己猜错了,那猜5位试试。使用命令javascript:alert(document.cookie="id="+escape("171 and (select top 1 len(username ) from admin)=5 "));试试。

发现是可以的,证明username对应第一行的数据是5位。那接下来就开始猜解每一位的内容吧。使用函数 and (select top 1 asc(mid(username ,1,1)) from admin)=97 ,这段函数的意思是猜解username第一位的ascll值为97。让我们试试吧。

发现第一字母是a,那第二个字母会是什么呢?我猜解一个b试试,and (select top 1 asc(mid(username ,2,1)) from admin)=98。

发现不是b,现在我要猜cde一个个猜下去嘛?当然不是了,那太慢了。我们可以用二分法<或者>来具体内容所在的区域。这在c语言排序中也是用到的。使用命令and (select top 1 asc(mid(username ,2,1)) from admin)<105来看看吧!

发现OK,那证明是在这个范围内的。剩下的就由你们自己去猜解吧!加油。

Pass:本博客不仅是写给工作室的学弟学妹看的,也是印证自己学习历程的,也可以说是写给自己复习的。可能我的思路有些奇特。不懂的部分可以问我也可以去百度,百度不能解决所有问题。但是可以解决大部分问题。

access数据库之cookie注入的更多相关文章

  1. Access数据库之偏移注入

    /*转载请注明出处:珍惜少年时*/ 偏移注入主要是针对知道表,但是不知道字段的. 这里我已经知道了表明是:sys_admin 可以使用: select exists(selct * from sys_ ...

  2. Access数据库SQL注入(Access SQL Injection)

    一.Microsoft Office Access数据库手工注入语句  1.参数后面加  ’ .and 1=1.and 1=2看返回状态判断是否存在注入点 2.参数后面加 and exists(sel ...

  3. ACCESS数据库注入

    0X01 我们想来了解一下access数据库 Access注入是暴力猜解 Access数据结构(access只有一个数据库) Access数据库 表名 列名 数据 没有库这个概念 只有表这个概念 这应 ...

  4. access数据库一般注入方法及偏移注入

    1.access数据库与mysql数据库的差别 access没有数据库,access数据库每个数据都是单个文件,每个access只有表结构 mysql : 库名,表名,列名,字段内容 access:表 ...

  5. ACCESS数据库偏移注入

    偏移注入主要是针对知道表,但是不知道字段的ACCESS数据库. 比如我们已经知道了表名是 admin 判断字段数: http://192.168.74.136:8002/Production/PROD ...

  6. Access数据库及注入方法

    目录 Access数据库 Access数据库中的函数 盲注Access数据库 Sqlmap注入Access数据库 Access数据库 Microsoft Office Access是由微软发布的关系数 ...

  7. 数据库其他注入思路 - 万能密码 - cookie注入 -搜索型注入

    另类登录注入形式: 经常有一类验证(ASP,PHP,JSP均存在),先判断user是否存在,ASP为例子:"select password from admin where user_nam ...

  8. SQLMAP注入Access数据库

    今天偶遇一Access数据库 1.首先尝试是否存在注入点,and1=1,and 1=2,发现返回信息不一样 2.使用sqlmap脱裤,发现时Access数据库,不能提权, 3.那就直接暴库吧,sqlm ...

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

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

随机推荐

  1. java打印系统时间

    public class Time { public static void main(String[] args) { Date t = new Date(); DateFormat ti = ne ...

  2. bzoj2748

    题解: 简单dp 代码: #include<bits/stdc++.h> using namespace std; ; int n,x,m,a[N],f[N][N]; int main() ...

  3. Python 字典删除元素clear、pop、popitem

    同其它python内建数据类型一样,字典dict也是有一些实用的操作方法.这里我们要说的是字典删除方法:clear().pop()和popitem(),这三种方法的作用不同,操作方法及返回值都不相同. ...

  4. 浅谈java 之 Map

    先来一张Map的类继承图 Map :Hashtable .HashMap .LinkedHashMap .TreeMap 的比较   1.Hashtable的方法实现了synchronized 是线程 ...

  5. 命令:curl

    在227服务器上执行 curl -i -X PUT --url http://192.168.1.227:8001/apis/ --data 'name=getweather' --data 'ups ...

  6. AsyncTask RejectedExecutionException 小结

    在使用Asynctask时,相信有些朋友会遇到以下RejectedExecutionException: Java.util.concurrent.RejectedExecutionException ...

  7. java的坦克大战

    一个渣渣写坦克大战的步骤: 1.首先创造好一个坦克和一个GAME框架,并且坦克能够跟着键盘键位移动 案例:在我的博客文件中保存,它的名字是:tankwar0100.rar 主要解决了:1.坦克背景框 ...

  8. 喝汤 beautifulsoup 批量爬取图片

    未成功 from urllib.request import urlopen import re import random base_url = "http://www.meizitu.c ...

  9. 开始 第一个自己的python爬虫程序 爬磁力链

    不能一事无成,这么久了学python还是吊着,要落地,落在博客园好了,好像公司也只能上博客园了 昨天看了一篇用正则爬电影天堂的视频,直接拿来用,爬磁力吧,爬好玩的 #导入模块 import reque ...

  10. zt secureCRT serialNo

    Name: ygeR Company: TEAM ZWT SerialNumber: 03-77-119256 License Key: ABH2MJ 9YVAC5 Z17QF7 4ZAS7Z ABG ...