本来今天想写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. hdu1098

    Ignatius is poor at math,he falls across a puzzle problem,so he has no choice but to appeal to Eddy. ...

  2. min_25筛题目总结

    看了网上众多博客后,我才发现,实现min_25只有脑子,没有代码. 当然可能是我太ruo了. min_25是一种想法,不是算法. 不要尝试套模板,因为很多题目并没有什么用. 最重要的一点,g不要看成是 ...

  3. spring为什么推荐使用构造器注入

    一.前言 ​ 项目中遇到一个问题:项目启动完成前,在A类中注入B类,并调用B类的某个方法. 那么调用B类的这个方法写在哪里呢,我选择写到构造器里,但是构造器先于Spring注入执行,那么执行构造器时, ...

  4. Ubuntu安装之python开发

    Ubuntu安装之python开发   什么??公司要用Ubuntu(乌班图)?不会用??怎么进行python开发??? 乌班图操作系统下载地址:http://releases.ubuntu.com/ ...

  5. Django 安装配置

    1-安装Python3.6.1 Python2.x 与3.x的版本在语法上稍有不同,区别在于输出语句的不同,这个可以看相关的文档. Python3.6.1,可以在Python的官网上下载:https: ...

  6. java实现链栈

    package linkstack; /** * Created by Administrator on 2019/4/18. */ public class LinkStack { private ...

  7. jenkins问题整理

    --------------------------------这是一个模板------------------------------------- 问题1:jenkins服务器上传jar包到指定服 ...

  8. [linux-脚本]shebang(shabang #!)

    使用Linux或者unix系统的人们对#!这个符号都不陌生,但要说出个具体的所以然来,很多人估计还真不行,我们有必要就此整理一下.Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指 ...

  9. ListBox多列显示,原来比较简单

    数据库的表中,如果有多个列要现实,而对应的是ListBox控件,一般情况下,ListBox是单列显示的, 例如 ListBox1.DataSource = dbcenter.accessGetData ...

  10. Python第一章(北理国家精品课 嵩天等)

    1.1程序设计基本方法 IPO 分析问题,划分边界,设计算法: 编写程序,调试测试,升级维护. 1.2Python开发环境配置 1.3实例1:温度转换 1.4Python程序语法元素分析 缩进,#添加 ...