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 ...
随机推荐
- hdu1098
Ignatius is poor at math,he falls across a puzzle problem,so he has no choice but to appeal to Eddy. ...
- Failed to install the hcmon driver
在安装虚拟机的时候出现“Failed to install the hcmon driver”错误,是之前VM没有卸载干净,提供两个参考解决方法: 1:在C盘的驱动文件夹也就是“C:\Windows\ ...
- 五、Vi和Vim编辑器
1. Vim编辑器: 在Linux下一般使用vi编辑器来编辑文件.vi既可以查看文件也可以编辑文件.三种模式: 命令行.插入.底行模式 切换到命令行模式:按Esc键: 切换到插入模式:按 i .o.a ...
- linux&Mysql
安装iptable yum install iptables-services --- 安装并解压相关文件到mysql /usr/local/mysql --- 配置 未完待续(由于阿里云已经安装好我 ...
- struts2自定义转换器
Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...
- 极速在mac中安装python开发环境
mac开发环境的安装: brew: 包管理工具{ 安装:ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/in ...
- Linux 使用硬盘
一.硬盘分区规划: swap(交换,掉期交易,互换)分区:虚拟内存使用,不能保存用户信息. boot(引导)分区:保存启动系统得相关文件. root(根)分区:放置系统文件得根,所有文件都保存在该分区 ...
- windows mysql 和linux mysql解决乱码问题
windows : 1找到mysql安装目录的my.ini文件 2修改的里面的内容为 character-set-server=utf8 default-character-set=UTF-8 然后打 ...
- WEB 设计规范
WEB端设计规范 一.网页尺寸 一般网站宽为996px:国内网站大部分还是以1000个像素为界限,因超过1000像素适合在大屏幕上浏览,小屏幕会显得拥挤.国内尺寸设置比较保守,这样可以保证 ...
- jstl,el表达式
在上一篇中,我们写了将数据传到jsp页面,在jsp页面进行展示数组,但是我们发现,在jsp页面写代码是一件很烦的事,一个循环要拆成两部分,例如for循环,在例如if语句: <%int a=22; ...