学习记录-cookie注入+偏移注入组合(手工注入)

学习记录-cookie注入+偏移注入组合(手工注入)

注明:此文章仅用于学术交流,记录和总结本人学习过程,不用于其它用途

一、http基础知识

1)无连接
1、每一次访问都是无连接,服务器挨个处理访问队列里的访问,处理完一个就关闭连接,这事儿就完了,然后处理下一个新的
2、无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接

2)无状态
1、协议对于事务处理没有记忆能力
2、对同一个url请求没有上下文关系
3、每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况
4、服务器中没有保存客户端的状态,客户端必须每次带上自己的状态去请求服务器

3)Http 协议keep-alive的状态和TCP下的keepalive

keep-alive:
1、在访问一个页面的过程中,会请求很多次服务器去获取不同的网页内容,而http的每次请求都是无连接的,请求->发送->关闭,所以在多次请求的过程中会使用不同的tcp端口号和sockfd,这样会发生多次的断开和链接tcp的过程,可以想象这种情况对于服务器而言是想当不利的。
2、http中keep-alive的作用就是复用tcp,在浏览器请求服务器http服务时,服务器将保持当前的tcp链接一段时间,这个时间是可以通过keepalive_timeout设置的。
3、浏览器在HTTP1.1下的keep-alive都是默认开启的。(长连接)

keepalive:
1、一种检测TCP链接状况的保险措施,它会每隔一定的时间就去client发送个数据,通过client端的反应来采取相应的措施

二、概念及原理

1)cookie注入
cookie是一种标识身份的认证且存在浏览器上,一般网站会设置失效时间,但是cookie注入来讲,它用的原理就是网站屏蔽了get、post传参,但是开发滥用request获取参数,在特定的情况下如后端文件php小于5.4版本或者asp脚本下,就会去获取cookie,并且带入数据库交互,此时我们利用cookie伪造参数,绕过了get、post传参,拼接语句进而到达注入目的,通过网站错显,获取数据;

2)偏移注入
偏移注入简单的讲就是知道表名,不知道列名,或者权限问题无法查询到列名,我们就可以使用偏移注入,利用表点*,如admin.*表示admin表的所有字段,通过位置调整联合查询,利用输出点输出不同的字段,当然此方法有一定局限性,有些场景因字段和输出点的影响不能偏移所以字段数据,只能获取其中一部分,还有想查询的表字段数量必须小于等于当前表字段数量;

三、cookie修改方式
cookie修改方式,暂时收集到四种方式;
1)浏览器F12-Application-cookie ,可以修改和添加cookie
在这里插入图片描述
2)浏览器F12-Console ,可以修改和添加cookie
在这里插入图片描述
3)通过插件,可以修改和添加cookie
EditThisCookie
在这里插入图片描述
4)通过抓包burp工具,可以修改和新增cookie
在这里插入图片描述
四、实战步骤

1)环境:某靶场
在这里插入图片描述
2)总体思路:判断是否存在注入—选择最效率高工作量小的注入方式—尝试注入—如失败尝试其它方式或者尝试其它子页面

3)注入过程

1、判断是否存在注入
原靶场尝试:and 1=1 和 and 1=2 或 or sleep(3) 等 结论:发现传参被限制,特殊字符不允许输入
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
尝试用修改cookie的方式试探,假设开发滥用传参request在asp脚本下,发现删除?id=171传参,通过cookie加入id=171传参,页面展示正常;结论:新增cookie的参数传入数据库,可以尝试用cookie注入
在这里插入图片描述
2、尝试注入

通过cookie注入,联合查询查询当前表的字段数量及输入点,注意的是插件拼接的语句需要通过url编码

1)通过显错,选择当前表字段数量及输出点
171 order by 10 —发现当前表字段数10个
在这里插入图片描述
171 and 1=2 union select 1,2,3,4,5,6,7,8,9,10 --为了不干扰输出这里加入1=2,发现数据库错误,猜测数据库为accese数据库,只有这个数据查询语句需要后面带表名,正巧脚本语言asp很大可能是使用这个数据库,如果是其它数据库直接就可以输出;
在这里插入图片描述
表名怎么去获取:第一个就是猜,一般情况有admin、user、news等这种普遍性名字的表;第二种通过burp工具暴力破解

第一种:直接猜测admin,发现输出点是2,3,7,8,9
代码:171 and 1=2 union select 1,2,3,4,5,6,7,8,9,10 from admin
在这里插入图片描述
第二种:burp工具暴力破解
先抓包:设置浏览器代理–设置工具代理–截取发送包–暴力破解
cookie参数新增id=171 and exists(select * from abc) 注意的是需要url编码,可以发现admin 返回的内容为正常界面,然后用admin表去查询输出点,结论:admin存在这个表,输出点2,3,7,8,9
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2)查找需要查询表的字段(这里是admin)
我们已经知道数据库为accese数据库,查询需要带表名,且这个数据库和mysql、oracle数据库不一样无自带库查看对应表名及列名信息,所以还是两种方法去获取,注意得是强行猜测成功字段很少,偏移注入获取数据更多

第一种:强行猜测
admin表字段常见为id 、username、password、passwd等,可以看出能查出这几个字段的数据,如果非accese数据库可用limit去获取数据,这个数据库limit不能用,top也不适合这个场景,!=语句在accese数据库不能使用,所以我们只能取到第一条记录,最好尝试第二种偏移注入

171 and 1=2 union select 1,id,username,4,5,6,password,8,9,10 from admin
在这里插入图片描述

第二种:偏移注入

1)尝试查询表admin的字段数量
171and 1=2 union select 1,2,3,4,5,6,7,8,9,admin.* from admin
171and 1=2 union select 1,2,3,4,5,6,7,8,admin.* from admin

171and 1=2 union select admin.* from admin
发现数据库错误,结论:admin里面字段数量大于10,所以无法展示出来,发现网站存在注入,只是这个当前页面表的字段数小于我们想查询的表,所以我们试试其它子页面,换个战场
在这里插入图片描述
3、寻找其它方法或者尝试网站其它子页面
这里已经判断存在cookie注入,所以我们依然用cookie注入,但是我们换个子页面,操作都和上面一样;
原页面:
在这里插入图片描述

判断cookie注入,结论:存在注入
在这里插入图片描述
寻找字段数量:26个字段
105 order by 1
105 order by 2

105 order by 26
在这里插入图片描述
我们上个页面已经查询到admin这个表,带入直接查输出点:3,5,7,25,这里有个技巧25这个点需要查看元素,可以将25改为其它如999,验证一下是不是输出点,输出点不一定都是在页面展示
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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
和上面方法一样,也是两种方法去获取字段和数据;
第一种:强行猜测
这里和上面一样,结果都一样,受限于猜测字段成功的数量,且只能获取第一条数据,为了更多得获取数据,我们用第二种偏移注入

第二种:偏移注入

1)尝试查询表admin的字段数量,发现数据库有输出,结论:admin里面字段数量12
105 and 1=2 union select admin.*,26 from admin
105and 1=2 union select admin.* ,25,26 from admin

105and 1=2 union select admin.* , 17,18,19,20,21,22,23,24,25,26 from admin
在这里插入图片描述
2)开始偏移获取数据

105 and 1=2 union select admin.* , 17,18,19,20,21,22,23,24,25,26 from admin --开始一个个偏移数据出来,现在默认是显示第一条数据
在这里插入图片描述
由于是accese数据库,limit函数不能使用(适用于其它数据库如mysql等),可以用top函数配合desc排序慢慢取出其它记录,首先让数据降序排列,top n 表示取前n条数据,它取出数据后自己会按照升序展示出来,页面输出只能输出一条记录,所以每次都会得到最小得那条,所以我们利用这个,可以获取全部数据

105 and 1=2 union select top 2 admin.* ,17,18,19,20,21,22,23,24,25,26 from admin order by 1 desc

在这里插入图片描述
五、个人总结
1)accese数据库sql语句必须查询必须带表名,通过与asp脚本配合
2)accese数据库时,偏移注入用top和desc组合,遍历数据,且!=不能使用
3)偏移注入和cookie注入是独立的不同方式,cookie注入需要cookie带入参数去数据库,偏移注入是字段名不清楚或者受限制查不出来采用,一般使用这种注入是access数据库,因为它没有自带库查询相应信息,如果是其它数据库如mysql等直接用自带库查询信息,然后直接查询数据,方便快捷,但是只能查到第一条记录,还有一种情况就是mysql等数据库由于其它原因,字段名查不来,可以用偏移注入慢慢获取出来,可以用limit慢慢去取
4)cookie插件还是抓包修改cookie都是要经过url编码
5)cookie注入很多时候是post、get传参被限制,开发用了request接受参数,这个参数在特定的情况下如后端文件php小于5.4版本或者asp脚本下也会接受cookie传参,我们拼接cookie达到注入目的
6)尝试网站一个页面不行,可以尝试其它注入方法或者换个其它子页面尝试注入
7)cookie注入的时候,一定删除url的传参,不然会优先执行get类型传参

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值