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

BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabySQli1-flag获取、解析

解题思路

打开靶场,题目提示是sql注入

 输入数据,判断下闭合

1'1'
123

报错:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1''' at line 1

 报错提示数据库类型是mysql,并且可以发现一个1'和123不见了,报错的是'1'''。

这里可以获取两个信息

一是,用户名和密码是分开查询的,因为只报错了用户名部分,123不见了,如果是同一条语句查询,后面123也会显示。

二是,闭合为单引号,因为一个1'不见了,说明一个'将前面的单引号闭合,导致第一个1消失。为什么报错'1''',先去掉报错信息自动添加的单引号,变成1'',再去掉我们自己填的1',剩下的单引号就是语句查询的单引号,也就是我们提前闭合后,语句落下的单引号,也证实了这是单引号闭合。

接下来可以尝试,密码输入1'1',发现不报错,可以猜测,密码根本就没有去查询... 

输入万能永真 用户名和密码:

1' or 1=1#

 

字符探测可以知道,是or被过滤了,使用大小写和双写绕过没有什么用

但是这里union 和 select 没有被过滤,用这个探测列数

1' union select 1,2,3,4#
Error: The used SELECT statements have a different number of columns
1' union select 1,2,3#

 三列时不报错,说明是三列。

到这里,手工注入就可以倒下了..因为后面会发现括号也被过滤了..

只能看有没有更多的信息,然后抓包查看响应包、或者查看响应页面网页源码,可以发现一串编码

<!--MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5-->

 用AI或者其他工具,可以发现是用base32编码的,解码:

c2VsZWN0ICogZnJvbSB1c2VyIHdoZXJlIHVzZXJuYW1lID0gJyRuYW1lJw==

 这个就比较明显是base64,解码:

select * from user where username = '$name'

 也没啥信息,证实了我们之前说的...只查询了用户名。

后面就只能去看源码了,关键源码:

if($arr[1] == "admin"){if(md5($password) == $arr[2]){echo $flag;}else{die("wrong pass!");}}

 可以看到1列必须是admin,然后2列必须是password的md5值的加密,才能输出flag。

那么这个数组1,2是什么呢。就是我们语句的2、3列。

1' union select 1,2,3#

1列呢,是flag,2列是我们的用户名,我们要填入admin,3列则是填入密码md5值的加密。

最坑的地方是,那么密码是什么?

结合前面说的,密码都没查询语句,其实,这里的3列密码就是我们自己输入的密码...

那么加密123456

e10adc3949ba59abbe56e057f20f883e

然后Payload就是输入用户名密码:

1' union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#
123456

成功显示

总结

结合代码审计的sql注入题,挺坑的,我感觉不如直接给源码得了,或者结合下文件包含什么的... 

http://www.dtcms.com/a/269544.html

相关文章:

  • 无法访问宝塔面板 - 特网科技
  • Coze智能体平台全景解析:从零构建企业级AI应用的实战指南
  • Spring Boot 企业项目技术选型
  • UI前端大数据可视化实战策略:如何设计符合用户认知的数据展示方式?
  • 京东携手HarmonyOS SDK首发家电AR高精摆放功能
  • 开发在线商店:基于Vue2+ElementUI的电商平台前端实践
  • 二刷(李宏毅深度学习,醍醐灌顶,长刷长爽)
  • AI技术通过提示词工程(Prompt Engineering)正在深度重塑职场生态和行业格局,这种变革不仅体现在效率提升,更在重构人机协作模式。
  • 车载网络安全是当代车辆功能很重要的组成部分
  • 语言模型 RLHF 实践指南(一):策略网络、价值网络与 PPO 损失函数
  • 【OceanBase 诊断调优】—— SQL 查询触发笛卡尔积怎么处理
  • Rust BSS段原理与实践解析
  • 自动驾驶感知系统
  • OpenWebUI(4)源码学习-后端routers路由模块
  • Halcon 入门教程:卡尺工具(Measure)详解与实战应用
  • 采煤机:技术革新驱动下的全球市场格局与未来趋势
  • 无缝矩阵的音频合成与音频分离功能详解
  • 大数据在UI前端的应用深化:用户偏好的动态调整与个性化推荐
  • Next.js ISR 缓存机制与最佳实践教程
  • 论文略读; AdapterFusion:Non-Destructive Task Composition for Transfer Learning
  • Android中MVI架构详解
  • 875、爱吃香蕉的珂珂
  • 吃透二分法的模板解法(适合所有类似于二分的算法题)
  • 百度斩获大模型中标第一,股价上涨5%
  • 深度剖析:Ceph分布式存储系统架构
  • 实时开发IDE部署指南
  • Tomcat与IIS:核心差异及接口调用实战解析
  • paddlehub环境搭建和测试
  • 【PTA数据结构 | C语言版】在顺序表 list 的第 i 个位置上插入元素 x
  • C语言使用Protobuf进行网络通信