ctfhub-web-整数型SQL注入

2024-08-25 18:36

本文主要是介绍ctfhub-web-整数型SQL注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

语句初识解释

    ?id=1 and 1=1 ?id=1 and 1=2

‘?’是传值的意思,如果后台没有过滤,and 1=1就会被带入后台SQL语句当中去进行查询,‘and’是并列与关系,必须左右两边都为真才能有返回值,如果出现 ?id=1 and 1=2这种错误的语法就会报错,可以用这种方式来判断SQL注入类型

    --+

’--‘在SQL语句中起着注释的作用,能将后面的语句注释掉,’+‘则代表空格,但是必须两者同时出现,才有注释作用,单独的’--‘不能起到注释作用

解题步骤

1.题目已经说明是整数型注入,直接查看字段数量,从order by 1开始直到order by 3,无正常回显,说明一共有两个字段

order by

order by语句用于根据指定的列进行排序,指定的列值也可以为数据所在的列数,但取的数字不可超过原有的列数,否则会报错,所以可以利用到查询中来,试探一共包含多少个字段

2.直到有两个字段后进行union联合查询 在url中输入 union select 1,2

union联合查询

union联合查询的作用

将union左右两边的select查询数据合并起来生成一个新的查询结果集,union联合查询语句是为了,判断SQL语句中哪个地方可以被代替,代替的地方是可以在网页上显示出来的。在本次注入语句select1,2中的1和2都可以被代替,我们就可以通过一些SQL语句或函数来代替1或2的位置,让我们需要查询的信息显示到网页上。

select * from 表名 [where 条件]
union
select * from 表名 [where 条件]

 

合并查询数据后,因为页面只显示第一行的数据,为了让我们自定义的SQL语句显示到网页上,让前面的参数查不出来,所以将id=1改为id=-1(不存在的一个字段,查询出来结果为空,字段2代替了字段1的位置,就只会显示字段2查询出来的内容)

 

3.成功回显后,将2替换为database()查看使用数据库名称,得知数据库叫sqli

 

4.查看数据库sqli中的所有表,找到flag相关表

 

group_concat

concat函数时将指定查询到的结果拼接之后以一列的形式列举出来,多个数据之间用逗号隔开,但是各个数据之间没有间距,空格需要自己添加并用单引号括起来。

而group_concat函数是用来将查询到的结果进行合并成一行,合并的结果以逗号隔开

 

information_schema库是mysql自带的一个库,我们常关注库中的schemata、tables、colums三个表,它们分别存储这整个数据库管理系统的所有数据库信息、表信息和字段信息,schemata表中,通过schema_name 字段获取所有的数据库名;在tables表中,通过table_name、table_schema可以获取所有表名与其对应的数据库名;在colums表中,通过colums、table_name、table_schema可以获取所有的字段名以及其所属表与数据库。

group_concat(table_name) from information_schema.tables where table_schema='sqli'
翻译
从information_schema数据库的tables表中查找数据库aqli所包含的表有哪些

 5.查看表中所有字段名

6.查询flag表中flag字段的全部数据,获得flag

 用sqlmap一分钟出flag

这篇关于ctfhub-web-整数型SQL注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106338

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.