access数据库之cookie注入
本来今天想写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注入的更多相关文章
- Access数据库之偏移注入
/*转载请注明出处:珍惜少年时*/ 偏移注入主要是针对知道表,但是不知道字段的. 这里我已经知道了表明是:sys_admin 可以使用: select exists(selct * from sys_ ...
- Access数据库SQL注入(Access SQL Injection)
一.Microsoft Office Access数据库手工注入语句 1.参数后面加 ’ .and 1=1.and 1=2看返回状态判断是否存在注入点 2.参数后面加 and exists(sel ...
- ACCESS数据库注入
0X01 我们想来了解一下access数据库 Access注入是暴力猜解 Access数据结构(access只有一个数据库) Access数据库 表名 列名 数据 没有库这个概念 只有表这个概念 这应 ...
- access数据库一般注入方法及偏移注入
1.access数据库与mysql数据库的差别 access没有数据库,access数据库每个数据都是单个文件,每个access只有表结构 mysql : 库名,表名,列名,字段内容 access:表 ...
- ACCESS数据库偏移注入
偏移注入主要是针对知道表,但是不知道字段的ACCESS数据库. 比如我们已经知道了表名是 admin 判断字段数: http://192.168.74.136:8002/Production/PROD ...
- Access数据库及注入方法
目录 Access数据库 Access数据库中的函数 盲注Access数据库 Sqlmap注入Access数据库 Access数据库 Microsoft Office Access是由微软发布的关系数 ...
- 数据库其他注入思路 - 万能密码 - cookie注入 -搜索型注入
另类登录注入形式: 经常有一类验证(ASP,PHP,JSP均存在),先判断user是否存在,ASP为例子:"select password from admin where user_nam ...
- SQLMAP注入Access数据库
今天偶遇一Access数据库 1.首先尝试是否存在注入点,and1=1,and 1=2,发现返回信息不一样 2.使用sqlmap脱裤,发现时Access数据库,不能提权, 3.那就直接暴库吧,sqlm ...
- 3.羽翼sqlmap学习笔记之Cookie注入
Cookie注入: 1.假设这个网址"http://www.xxx.org/Show.asp?id=9"存在注入点.2.sqlmap命令提示符下输入下列内容进行跑表. sqlmap ...
随机推荐
- Linux c codeblock的使用(一):新建一个工程
(1)点击New->Project,出现如下图所示,然后再选择Console application,点击Go (2)点击Next (3)根据自己的需求选择特定的语言(前提是你的系统上有这个语言 ...
- unity中编辑器直接截屏代码
using UnityEngine; using System.Collections; using System.Windows.Forms; public class screenshots : ...
- 洛谷1196【NOI2002】题解
题目描述 公元五八○一年,地球居民迁至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星域爆发战争.泰山压顶 ...
- How to find out which version of tensorflow is installed in my pc? - 如何找出我的电脑中安装了哪个版本的 tensorflow?
I'm using tensorflow and have got some weired issues. I'm told it might be related to the version of ...
- 记录PHP的执行时间
网上不少误导信息,实际上这个答案在PHP源码中的Zend文件夹下bench.php是有的 在此纠正下网络上复制粘贴造成的错误.希望后来人少踩点坑. function getmicrotime() { ...
- Excel汉字转换拼音首字母缩写的函数
打开Excel->工具->宏->Viaual Basic编辑器在弹出来的窗口中对着VBAproject点右键->插入->模块下面会出现一个名为"模块1" ...
- 初读"Thinking in Java"读书笔记之第三章 --- 操作符
更简单的打印语句 导入自己编写的静态类库,即可使用print();打印 使用Java操作符 操作符:+,-,*,/,=,==,!=,+=,?:,%等 几乎所有操作符都只能操作"基本类型&qu ...
- python cmd的各种实现方法及优劣
Python_cmd的各种实现方法及优劣(subprocess.Popen, os.system和commands.getstatusoutput) 目前我使用到的python中执行cmd的方式有 ...
- python单列模式
单例模式:就是永远用一个对象的实例 初级版 #初级版 class Foo(object): instance=None def __init__(self): pass @classmethod # ...
- Python机器学习(python简介篇)
1.Python 数据类型 Python 内置的常用数据类型共有6中: 数字(Number).布尔值(Boolean).字符串(String).元组(Tuple).列表(List).字典(Dictio ...