url参数接收的一些安全应用场景
越权漏洞,从原来的修改id越权到后面的自己加参数,减参数越权,到现在的加特殊字符.攻击手段在进步:
以php和java为例,聊聊参数接收的最大接受能力,可以插入哪些脏数据?
demo1.php:
<?php
$a =$_GET['a'];
if($a==1){
echo 1;
}else{
echo "false";
}
?>
直接接收1参数,输出1,没啥问题:

测试环节1:在参数value前面加点东西跑下:


在参数value的前面加入一些url编码数据,发现
%09
%0a
%0b
%0c
%0d
%20
%2b
%30
在数据前缀,加入这些url编码,不影响我们输出数据:
测试环节2:在参数value后面加入一些url编码数据:

发现可控我们选择的数据有很多,长度203的就是符合条件的,都是返回1的:

当我自定义输入1aaa:

仍然输出1,因为php中使用==匹配的是数字的时候,是自动帮你int,类似于intval操作.
修复这个问题的办法有很多,其中一种修复方案是:
修改代码:
<?php
$a =$_GET['a'];
if($a===1){
echo 1;
}else{
echo "false";
}
?>
再次尝试在参数value前面/后面加点数据:

直接false.
java下的处理:
以spring boot为例子,其他的均未测试:
测试demo:
@ResponseBody
@GetMapping("/PathOne")
public void PathOne(@RequestParam("url") int url,HttpServletResponse response) throws IOException {
if(url==1){
response.getWriter().write("1");
}else{
response.getWriter().write("false,fasle");
}
}
和上面的测试一样
测试环节1:对url参数value前面数据测试:


发现
10 %09 200 false false 93
11 %0a 200 false false 93
12 %0b 200 false false 93
13 %0c 200 false false 93
14 %0d 200 false false 93
29 %1c 200 false false 93
30 %1d 200 false false 93
31 %1e 200 false false 93
32 %1f 200 false false 93
33 %20 200 false false 93
36 %23 200 false false 93
44 %2b 200 false false 93
加入这几种url编码数据不会影响我们的输出:
测试环节2:在url参数value后面加入url编码数据进测试:
没有php那么多:

他的底层和php的处理不一样.
他可支持的url编码数据是:
10 %09 200 false false 93
11 %0a 200 false false 93
12 %0b 200 false false 93
13 %0c 200 false false 93
14 %0d 200 false false 93
29 %1c 200 false false 93
30 %1d 200 false false 93
31 %1e 200 false false 93
32 %1f 200 false false 93
33 %20 200 false false 93
他的修复方案也有很多种,其中一种修复方案:
修改代码:
@ResponseBody
@GetMapping("/PathOne")
public void PathOne(@RequestParam("url") String url,HttpServletResponse response) throws IOException {
if(url.equals("1")){
response.getWriter().write("1");
}else{
response.getWriter().write("false,fasle");
}
}
再次访问:

再次添加url编码数据已经不能修改了.
刚和phpoop聊完这个问题后,下午无聊刷推特就看到了相关实战案例,估计白帽子是黑盒的:
实战案例应用场景,当提取参数value的时候,和业务交接的时候,可能会存在安全问题:
example: 
越权失败,新增一些url编码:

更多的应用场景:waf bypass....
实战案例应用场景参考:https://16521092.medium.com/some-ways-to-find-more-idor-da16c93954e5
url参数接收的一些安全应用场景的更多相关文章
- 路由传值及获取参数,路由跳转,路由检测,this.$route.query和this.$route.params接收参数,HttpGet请求拼接url参数
配置动态路由参数id: routes: [ // 动态路径参数 以冒号开头 { path: '/user/:id', component: User } ] html路由跳转: <router- ...
- SpringMVC请求参数接收总结
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- SpringMVC请求参数接收总结(一)
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- 2.5万字长文简单总结SpringMVC请求参数接收
这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...
- javascript:设置URL参数的方法,适合多条件查询
适用场景:多条件查询情况,如下图所示: 通过设置URL参数,再结合数据源控件设置的RUL参数,就能进行简单的多条件查询了. javascript函数: <mce:script type=&quo ...
- 用js 获取url 参数 页面跳转 ? 后的参数
记得之前在原来的公司写过这个东西,但是还是忘记怎么接住参数了,只知道怎么把id传过去! 问了身边的大佬 他首先推荐了我一个链接是别人写好的方法 附上链接地址:http://blog.csdn.net/ ...
- 【Nginx】下载,请求限速,根据URL参数限速
这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...
- 加号变空格问题 url参数 post get 请求发送
问题:加号后台接收变空格问题 结论: 1.任何get拼接的请求 参数key value 需要编码后在拼接 2.get请求避免做数据提交,用post提交.jq,axios的post提交默认编码了不会有问 ...
- php 直接获取url参数赋值成变量。省去繁琐的获取参数,再一个个赋值
php 直接获取url参数赋值成变量.省去繁琐的获取参数,再一个个赋值 parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse_url(string $ ...
随机推荐
- MSSQL·最长输出长度限制之解决方案
阅文时长 | 0.11分钟 字数统计 | 234.4字符 主要内容 | 1.引言&背景 2.声明与参考资料 原文『MSSQL·最长输出长度限制之解决方案』 编写人 | SCscHero 编写时 ...
- gdb调试多线程多进程
多进程调试 我们使用gdb调试程序,gdb的调试默认是调试父进程的,如果要做到对父进程和子进程都做到调试,所以附加了调试子进程的功能. 设置条件 如果让gdb可以同时调试多个程序,只需要设置follo ...
- JQuery Ajax 请求参数 List 集合处理
引言 JQuery Ajax 发送请求参数一般都是基本类型,比如 String.int:那么,请求参数如果是 List 集合应该如何处理呢? 情况一:Aajx 发送 List 类型请求参数 举例如下: ...
- cgic: CGI的C函数库-(转自COS)
下载回源码包以后,就3个文件:cgic.c 函数库capture.c 一个很简单的CGI例子,仅仅输出两行提示文字cgictest.c 一个演示读取form表单数据的CGI例子 首先在 ...
- java学习之旅2——set
var set = Collections.synchronizedSet(new HashSet<Integer>()); 可以这样来获得一个同步的集合. 对于HashSet, for循 ...
- 3D网页小实验-基于Babylon.js与recast.js实现RTS式单位控制
一.运行效果 1.建立一幅具有地形起伏和不同地貌纹理的地图: 地图中间为凹陷的河道,两角为突出的高地,高地和低地之间以斜坡通道相连. 水下为沙土材质,沙土材质网格贴合地形,河流材质网格则保持水平. 2 ...
- mybatis运行出现org.apache.ibatis.binding.BindingException
今天学习mybatis的第一天,发现用junit测试报出了次异常:org.apache.ibatis.binding.BindingException: Type interface cn.dzp.d ...
- python基础知识笔记(二) (出现语法以及颜色问题)
以下是在学习Python时需要尤其要注意的点: 1.程序中出现中文,运行的时候出现如下错误: SyntaxError: Non-UTF-8 code starting with '\xc1' 则是编码 ...
- ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁
作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...
- GStreamer 1.18.4稳定的错误修复版本
GStreamer 1.18.4稳定的错误修复版本GStreamer团队宣布最喜欢的跨平台多媒体框架的稳定的1.18版本系列中的另一个错误修复版本!此版本仅包含错误修复和重要的安全修复程序,并且从1. ...