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

http参数污染利用php小特性绕过贷齐乐waf

目录

分析源码

php的特性

php另外一个特性

实现注入

联合查询注入

爆库

爆表名

爆列名

爆出flag


分析源码

GET/POST/REQUEST/COOKIE都会经过这个替换str_ace(array('&', '"', '<', '>','(',')'), array('&', '"', '<', '>','(',')'), $string)

GET/POST/REQUEST三个变量,都会经过这个正则:select\|insert\|update\|delete\|'\|/\*\|\*\|\.\./\|\./\|union\|into\|load\_file\|outfile

一旦遇到select,包括单引号,包括注释符,就立即exit整个流程

这个过程等于手工处理了一遍REQUEST\_URI,将REQUEST\_URI中的字符串分割成数组覆盖到REQUEST里。

按道理来说并没有什么大错误,但试想:这个过程是在我们的第一道WAF之后进行的,假设我们有一个方法让第一道WAF认为请求中没有恶意字符,再通过这里的覆盖,将恶意字符引入$_REQUEST中,就可以造成WAF的绕过了。

所以怎么样才能让第一个waf认为我们的请求没有恶意字符呢?

php的特性

php中他会取最后一个值

假设我有一个办法,在第一次WAF检测参数的时候,检测的是2,但后面覆盖request的时候,拿到的是1,那么不就可以造成WAF的绕过了么?

虽然没有报错,但这里我们两个传参都是用的i_d,最终我们进入到查询语句中的时候他还是只会取第二个值

所以这里并没有意义

php另外一个特性

php另一个特性,自身在解析请求的时候,如果参数名字中包含” “、”.”、”[“这几个字符,会将他们转换成下划线。

那如果我发送的是这样一个请求: php?i_d=11111&i.d=22222 ,php先将i.d转换成i_d,即为php?i_d=11111&i_d=22222 ,再获取到的$\_REQUEST i_d就是22222。

可在$\_SERVER\['REQUEST\_URI'\]中,i_d和i.d却是两个完全不同的参数名,那么切割覆盖后,获取的$\_REQUEST\['i_d\]却是11111。

实现注入

联合查询注入

发现我们其实是可以绕过的

爆库

用limit观察

爆表名

爆列名

爆出flag

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Dom 元素转换 Image 图片 (截图)
  • 探索PHP的心脏:流行CMS系统全解析
  • KillWxapkg 自动化反编译微信小程序,小程序安全评估工具,发现小程序安全问题,自动解密,解包,可还原工程目录,支持修改Hook,小程序
  • html复习
  • 大语言模型面试宝典:30+ 必考问题与答案,助你一臂之力
  • 关于100个linux常用的命令
  • 2-63 基于matlab的GMPHD滤波器算法
  • 互联网摸鱼日报(2024-08-13)
  • Java Nacos与Gateway的使用
  • 【一文搞懂】Rewind AI是什么?Rewind AI能干嘛?全网最全指南!
  • Web自动化测试:UI自动化框架结构以及思路!
  • 【机器学习之深度学习】深度学习和机器学习的关系以及深度学习的应用场景
  • PHP、JavaScript代码审计工具
  • 如何 让git commit 自动生成 submodules 改动的提交说明?
  • 基于Python中PyQt5实现简易浏览器的设计与实现
  • Angular 响应式表单 基础例子
  • Centos6.8 使用rpm安装mysql5.7
  • classpath对获取配置文件的影响
  • FineReport中如何实现自动滚屏效果
  • Java Agent 学习笔记
  • java 多线程基础, 我觉得还是有必要看看的
  • Linux Process Manage
  • python 装饰器(一)
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • springMvc学习笔记(2)
  • Unix命令
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 通过几道题目学习二叉搜索树
  • 小试R空间处理新库sf
  • 学习Vue.js的五个小例子
  • 一起参Ember.js讨论、问答社区。
  • 赢得Docker挑战最佳实践
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​520就是要宠粉,你的心头书我买单
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #Linux(Source Insight安装及工程建立)
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $NOIp2018$劝退记
  • (12)目标检测_SSD基于pytorch搭建代码
  • (21)起落架/可伸缩相机支架
  • (4) PIVOT 和 UPIVOT 的使用
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)二分查找 超详细
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (黑马C++)L06 重载与继承