当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 网站上线流程完全手册:域名、服务器与CDN
  • 牛客周赛 Round 57 ABCDFG
  • python中如何将小数显示为分数
  • 秃姐学AI系列之:NiN + 代码实现
  • 数学基础 -- 微积分之近似误差计算
  • 网络UDP报文详细解析
  • java springboot 实现文件上传下载(文件服务器,文件统一处理,图片,word,pdf,视频,等)
  • C++ 设计模式——命令模式
  • 服务器被渗透的表现及检测方法
  • IT 行业的就业情况
  • (十)Flink Table API 和 SQL 基本概念
  • 【C++指南】内存管理(三)
  • Linux 部署 MinIO(远程服务器)
  • Ubuntu清除缓存的方法--防止系统崩溃
  • C# messagePack对类(class)序列化简单示例
  • Date型的使用
  • HTTP 简介
  • JavaScript类型识别
  • js如何打印object对象
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Odoo domain写法及运用
  • PV统计优化设计
  • Python3爬取英雄联盟英雄皮肤大图
  • python学习笔记 - ThreadLocal
  • scala基础语法(二)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 基于web的全景—— Pannellum小试
  • 开源SQL-on-Hadoop系统一览
  • 前端面试之闭包
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 最简单的无缝轮播
  • 阿里云服务器购买完整流程
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​Spring Boot 分片上传文件
  • ‌移动管家手机智能控制汽车系统
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (十八)Flink CEP 详解
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)Dubbo快速入门、介绍、使用
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bashrc在哪里,alias妙用
  • .cfg\.dat\.mak(持续补充)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET MAUI Sqlite程序应用-数据库配置(一)
  • .net 按比例显示图片的缩略图
  • .net 获取某一天 在当月是 第几周 函数
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .net中的Queue和Stack