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

sqli-labs靶场通关笔记:第17关 POST请求的密码重置

一、审题

这关显示是密码重置的界面。在用户名的输入框内测试,发现注入语句都没有效果。

二、思考

查看一下源码,发现用户名输入框使用check_input()函数进行了过滤。

function check_input($value)
{// 1. 输入值非空检查if(!empty($value)) {// 2. 输入长度截断 (最多15字符)$value = substr($value,0,15);}// 3. 魔术引号处理if (get_magic_quotes_gpc()) {// 4. 移除自动添加的反斜杠$value = stripslashes($value);}// 5. 数字类型判断if (!ctype_digit($value)) {// 6. 非数字处理:转义+单引号包裹$value = "'" . mysql_real_escape_string($value) . "'";} else {// 7. 数字处理:转换为整数$value = intval($value);}return $value;
}

也就是说,必须输入真实有效的用户名,才能进行密码修改的操作,但是密码输入框没有做过滤。用户名输入admin,密码输入123456,提示修改成功。再修改密码,输入单引号,页面回显报错。

那么测试一下报错注入,发现是可以成功注入。

这里还需要注意一个问题,更新密码的操作是update,为数据操作语言(DML),而select是数据查询语言(DQL),两个不能在同一语句中执行,所以查询users表中字段数据会报错。

 -1' and updatexml(1,concat(0x7e,(select group_concat(username,password) from users)),1) #

解决的办法就是,创建一个独立的子查询,将结果集作为一张临时表,然后通过查询临时表获取数据。

-1' and updatexml(1,concat(0x7e,(select group_concat(username,password) from (select username,password from users)a)),1)#

这里的(select username,password from users)a意思是执行一个独立的子查询作为临时表,别名为a,再将其整合到update语句中。

对于报错回显字符有限制的局限,可以使用字符串截断函数进行截断回显。

三、做法

爆数据库名,爆表名,爆字段,爆数据。


文章转载自:
http://book.hnsdj.cn
http://backbreaking.hnsdj.cn
http://braver.hnsdj.cn
http://benny.hnsdj.cn
http://antipodes.hnsdj.cn
http://chalutz.hnsdj.cn
http://aiglet.hnsdj.cn
http://adown.hnsdj.cn
http://austenian.hnsdj.cn
http://acetanilide.hnsdj.cn
http://arundinaceous.hnsdj.cn
http://argive.hnsdj.cn
http://biomolecule.hnsdj.cn
http://baldacchino.hnsdj.cn
http://aberdonian.hnsdj.cn
http://arspoetica.hnsdj.cn
http://anastrophy.hnsdj.cn
http://authoritative.hnsdj.cn
http://caster.hnsdj.cn
http://cantonal.hnsdj.cn
http://automatic.hnsdj.cn
http://cayenne.hnsdj.cn
http://butterboat.hnsdj.cn
http://affluently.hnsdj.cn
http://betweenbrain.hnsdj.cn
http://antifeminist.hnsdj.cn
http://billow.hnsdj.cn
http://chickling.hnsdj.cn
http://bouquetin.hnsdj.cn
http://bernice.hnsdj.cn
http://www.dtcms.com/a/280470.html

相关文章:

  • 如何配置maven
  • 【Linux手册】重定向是如何实现的?Linux下为什么一切皆文件?
  • flutter下的webview适配rem问题
  • 【NBA】75 Greatest NBA Players of All Time
  • 春秋云镜 initial
  • Uniapp动态切换主题与老年模式详解
  • 12.6 Google黑科技GShard:6000亿参数MoE模型如何突破显存限制?
  • Zen:一款简洁高效、注重隐私的开源浏览器
  • 小白学HTML,操作HTML网页篇(1)
  • 密码工程原理与技术——总复习
  • 灰度图像,RGB图像和二值图像
  • 从OSI到TCP/IP:Linux网络架构深度解析
  • react - 根据路由生成菜单
  • 多模态大模型研究每日简报(2025-07-14)
  • AI应用服务
  • 整除分块练习题
  • 某地金属矿山自动化监测服务项目
  • Python 数据建模与分析项目实战预备 Day 6 - 多模型对比与交叉验证验证策略
  • 2.【C# in .NET】探秘数据类型:从底层机制到实战启示
  • MySQL高级篇(二):深入理解数据库事务与MySQL锁机制
  • 农村养老模式:乡土智慧与时代创新的共生之路
  • 【每日算法】专题十_字符串
  • PySpark Standalone 集群
  • react native学习record one month
  • Flink SQL 性能优化实战
  • 使用Dify+fastmcp 实现mcp服务,内含详细步骤与源码
  • Windows远程FX的编解码器性能优化
  • 算法在前端框架中的集成
  • 三十二、【核心功能改造】数据驱动:重构仪表盘与关键指标可视化
  • 原型继承(prototypal inheritance)的工作原理