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 $ ...
随机推荐
- 容器环境下如何将NuGet包XML文档添加到Swagger
容器环境下将NuGet包XML文档添加到Swagger 在.NET Core项目开发过程中,为了实现代码复用,我们将可以重复使用的部分拆分成一个个小的NuGet包.这些NuGet包可以在其他系统中复用 ...
- 5Spring动态代理开发小结
5Spring动态代理开发小结 1.为什么要有动态代理? 好处 1.利于程序维护 2.利于原始类功能的增强 3.得益于JDK或者CGlib等动态代理技术使得程序扩展性很强 为什么说使得程序扩展性很强? ...
- Git安装教程最新版本(国内gitee国外github)
Git安装教程最新版本(国内gitee国外github) 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 获取大师使用的typora主题: http://w ...
- [DB] Zookeeper
介绍 相当于"数据库",类似linux.hdfs的属性文件结构 分布式协调框架,实现HA(High Availability) 分布式锁管理框架 保证数据在zookeeper集群之 ...
- 【转载】 Linux常用命令: zip、unzip 压缩和解压缩命令
Linux常用命令: zip.unzip 压缩和解压缩命令 Linux常用命令: zip.unzip 压缩和解压缩命令 zip的用法 基本用法是: zip [参数] [打包后的文件名] [打包的目 ...
- jmeter从安装到使用
最近,项目需要做接口测试,在python和jmeter之前选择,最终还是选择jmeter,虽然脚本管理及持续集成方面有所不便,但胜在使用简单,调试方便,方便后续做并发压力测试,而且最后的报告统计图表也 ...
- MyBatis的Example如何按条件排序(Day_35)
MyBatis的Example如何按条件进行排序? 背景:有时我们在使用mybatis example 进行查询时,需要进行相应的业务排序.本博客以下图为例 @Override public List ...
- Linux下安装JDK 1.8你必须知道的糟心事
来源:Atstudy网校 1.简介 在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还的一个一个的摸索尝试,而且网上大多数都是一些Or ...
- teprunner测试平台定时任务这次终于稳了
teprunner测试平台已经有一个多月没有更新了,主要原因是定时任务不够稳定,经过反复试错,找到了解决办法,这次终于稳定了. 本文开发内容 作为测试平台而言,定时任务算是必备要素了,只有跑起来的自动 ...
- Step By Step(Lua元表与元方法)
Step By Step(Lua元表与元方法) Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加.假设a和b都是table,通过元表可以定义如何计算表 ...