All posts by 龙生
k8s配置中的port、targetPort、nodePort和containerPort区别
port port是k8s集群内部访问service的端口,即通过clusterIP: port可以访问到某个service nodePort nodePort是外部访问k8s集群中service的端口,通过nodeIP: nodePort可以从外部访问到某个service。 targetPort targetPort是pod的端口,从port和nodePort来的流量经过kube-proxy流入到后端pod的targetPort上,最后进入容器。 containerPort containerPort是pod内部容器的端口,targetPort映射到containerPort。 ———————————————— 版权声明:本文为CSDN博主「满天星河」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/GuXiaoyan12/article/details/103751227
View Details使用sqlmap 对接口进行json格式参数传入
sqlmap进行注入时,如果接口post方式,body是json方式时,有2种方式 方式1:文件方式 可以通过burp suite 来抓 接口请求的数据,将数据保存到 文件中。 然后使用 sqlmap来执行注入,举例:
1 |
python .\sqlmap.py -r "C:\Users\gal\Desktop\getdetail.txt" |
当然也可以通过 postman 当中将请求转换成 http请求方式,将数据保存到文件中。 举例: 拷贝 请求内容,保存到文件 方式2:sqlmap --data参数 正常来说,请求参数是 -u 表示请求url地址。 –date 表示body参数。 注意 json结构体 前后 需要加入 单引号
1 2 |
python sqlmap.py -u "http://172.16.0.1:1000/Burvice/config/getbr" --method "POST" --data='{"appid":"zxs", "name": "dffff", "env": "dev","version": "5.0.0"}' |
要求: 接口请求的参数都正常,可以正常进入 到 业务逻辑中。 在windows上跑命令时, 发现无法扫描出结果 结果排查了很久,通过抓包 发现使用此格式进行请求时:
1 |
--data='{"appid":"zxs","version": "5.0.0"}' |
接口数据请求会被改掉,导致 服务端不能正常处理这个数据。 然后试了下 将json 数据进行转义,发现这个可以正常请求了。。。。:
1 |
--data='{\"appid\":\"zxs\",\"version\": \"5.0.0\"}' |
好嘞,接着我总不能一直在windows上跑吧,得放在linux跑,好,采用格式:
1 |
--data='{\"appid\":\"zxs\",\"version\": \"5.0.0\"}' |
发现跑不通,服务端又出错了。 接着使用 没有转义的结构体, 就又可以跑通了。。。 不过这个限制也有可能是 我们的服务端的问题,并不通用。 总结 post请求时如果发送json数据,2种方式: -r 文件 -u 地址 --data=’{}’ windows上跑,需要把 json 进行转义 from:https://blog.csdn.net/cagezxy/article/details/120570403
View DetailsSQLmap JSON 格式的数据注入
现在越来越多的网站开始使用 RESTFUL 框架,数据传输使用 JSON,那么这种情况下我们如何使用 SQLmap 进行自动化注入呢? 能使用 * 指定注入点吗? 先说结论:对于 JSON 数据的 SQL 注入使用 * 是错误的! 首先需要着重强调一下,网上有很多文章说可以使用*来指定注入点,但经过我的实测,SQLmap 发送的数据包会被强制转换为普通格式。 我们可以使用-vvv参数来查看 SQLmap 发送的测试数据:
1 |
sqlmap -u https://www.example.com —data {"externalCode":"DCS214120101000456814087*"} --risk=3 -vvv |
如上图所示,可以看到使用*时,JSON 格式的 POST 数据被强制转换为普通格式,如此发送到服务端当然是没办法识别的。 正确的用法: -r 参数 对于 JSON 格式的注入,正确用法是: 将 BurpSuite 中的数据包保存到本地 sql.txt 2. 使用 -r 参数来注入,SQLmap 会自动识别 JSON 格式并发现注入点:
1 |
sqlmap -r sql.txt |
此时,如果使用-vvv参数查看,你会发现发送的测试数据包仍然是 JSON 格式: 这种用法才是正确的. 两个比较容易采坑的点 如果是 HTTPS站点,需要手动在 Host 字段后加上 443 端口,就像下面这样: 手动在 Host 字段添加 :443 端口 2. 如果要指定 POST 数据中 JSON 参数注入点,-p参数是不支持的,需要手动添加*: from:https://zhuanlan.zhihu.com/p/265405012
View Details渗透测试工具Burp Suite详解
Burp Suite 的安装 Burp Suite是一款集成化的渗透测试工具,包含了很多功能,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。 Burp Suite由Java语言编写,基于Java自身的跨平台性,使这款软件学习和使用起来更方便。Burp Suite不像其他自动化测试工具,它需要手工配置一些参数,触发一些自动化流程,然后才会开始工作。 Burp Suite可执行程序是Java文件类型的jar文件,免费版可以从官网下载。免费版的Burp Suite会有许多限制,无法使用很多高级工具,如果想使用更多的高级功能,需要付费购买专业版。专业版与免费版的主要区别有以下三点。 Burp Scanner 工作空间的保存和恢复 拓展工具,如Target Analyzer、Content Discovery和Task Scheduler burp suite就是一个抓包、改包工具 Burp的安装一共分为三步: 1、java的安装 2、环境变量的配置 3、运行burp burp的安装与基本使用 java环境 从java官网进行下载:搜索java jdk 安装完成之后,配置环境变量:将C:\Program Files\Java\jdk1.8.0_201复制到 点击确定 然后打开bin目录,再将目录C:\Program Files\Java\jdk1.8.0_201\bin复制到 点击确定 现在可以用cmd指令输入javac输入java也可以 出现如图情况,说明环境变量配置成功。 下载burp 下载地址:https://portswigger.net/burp 我这里安装的是exe文件 双击安装,一直next——》finish 打开——》I accept——》弹框选delete——》next——》start burp 免费版本没有Scanner Burp Suite入门 设置代理 burp suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据、服务端的返回信息等。burp suite主要拦截HTTP和HTTPS 写协议的流量,通过拦截,burp以中间人的方式对客户端的请求数据、服务端的返回信息做各种处理,以达到安全测试的目的。 在日常工作中,最常用的web客户端就是web浏览器,我们可以通过设置代理信息,拦截web浏览器的流量,并对经过burp代理的流量数据进行处理。burp运行之后,Burp Proxy默认本地代理端口为8080。如图: HTTP的代理 以Firedox浏览器为例: 打开菜单——》选项——》网络代理——》设置——》手动配置代理 127.0.0.1端口是8080 如上图所示,设置HTTP代理为127.0.0.1,端口为8080,与burp Proxy中的代理一致 端口在0~65535之间设置 手动代理:代理到本机,因为想让浏览器通过本机把流量发送到这个端口,再由burp监听到,把包拦下来(端口的选择要和burp一样) HTTP代理(因为抓的是http的包) 设置完后,burp就可以抓包了。 重新打开: SSL看做HTTPS就行了 HTTPS的代理 我们要怎么做才能抓HTTPS的包呢? 如果要抓HTTP的包要用HTTP代理 如果要抓HTTPS的包,要用HTTPS代理(SSL proxy) HTTP默认走的是80端口,HTTPS走的是443端口。两者端口不一样,要代理HTTPS就一定要用SSL去代理 设置完代理就可以了吗?不行 HTTPS(S表示security),多添加了一套SSL层(在TCP和HTTP中间),作加密的。 burp suite有一个证书:http://burp/(输入的是http,所以一定要代理http 才可以访问http的网站,代理的是https就可以访问https的网站) 安装证书后就可以解密百度传回的数据 导入刚刚下载的证书 这个证书的名字叫PortSwigger CA 导入后弹出的弹框(选第一个也行,都选中也行) 导入这个证书就可以解密https协议里面的乱码数据了 现在抓一个百度的包吧! 若只设置了SSL proxy,能不能抓http是包?不能 因为没有代理http的,只代理了https的,SSL就理解为HTTPS,所有要抓http,要设置https代理。 总结:抓https的包 抓https就代理ssl,抓http就代理http […]
View Details基于vue的 表单设计器(拖拽生成表单)
日常开发时想要快速构建节省时间或者功能需求需要拖拽生成表单,推荐使用以下表单设计器。 1.基于vue+elementui 的表单设计及代码生成器 Form Generator Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 码云仓库: form-generator: Element UI表单设计及代码生成器 演示地址: form-generator 安装依赖:
1 |
npm install |
JSON解析器:
1 2 |
// 安装 npm i form-gen-parser |
vscode插件 form-generator-plugin 此项目将form-generator的vscode-plugin分支封装为一个vscode插件,拓展了form-generator的文件写入能力; 帮助使用element UI的开发者完成基本的表单代码搭建任务,减少重复的劳动。 2. 基于vue+ant-design-vue的表单设计器 k-form-design 设计器布局参考form-generator项目,基于vue和ant-design-vue实现的表单设计器,样式使用less作为开发语言,主要功能是能通过简单操作来生成配置表单,生成可保存的JSON数据,并能将JSON还原成表单,使表单开发更简单更快速。 github仓库:https://github.com/Kchengz/k-form-design 演示地址:http://cdn.kcz66.com/form-design.html 组件 KFormDesign 表单设计器(基于可视化操作快速设计出表单页面,生成配置json或页面) KFormBuild 表单构建器(根据设计器中获取的配置json数据,快速构建出表单页面) 安装
1 2 3 4 5 |
# 使用yarn yarn add k-form-design # 使用npm npm i k-form-design --save |
引入组件
1 2 3 4 |
// 在main.js引入 import KFormDesign from 'k-form-design' import 'k-form-design/lib/k-form-design.css' Vue.use(KFormDesign) |
使用组件
1 2 3 4 5 |
<template> <div> <k-form-design /> </div> </template> |
3.基于vue的表单生成器(支持iview,element-ui,ant-design-vue) form-create form-create 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持3个UI框架,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件。 安装 iview
1 |
npm install @form-create/iview |
iview
1 |
npm install @form-create/iview4 |
element-ui
1 |
npm install @form-create/element-ui |
ant-design-vue
1 |
npm install @form-create/ant-design-vue |
4.基于vue+ElementUI的表单设计器 form-designer 码云仓库:https://gitee.com/wurong19870715/formDesigner 演示地址:http://wurong19870715.gitee.io/formdesigner from:https://blog.csdn.net/weixin_43765747/article/details/122995904
View DetailsJava 获取当前时间所在自然周起止时间及自然周中的每一天
有的时候需要获取当前时间所在自然周中的起始和截止时间,或者某个时间段内里的每一天的日期 1、先来解决获取自然周中的起止时间
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/** * 获取当前时间所在自然周的起止日期 * * @return */ public static Map<String, String> weekBeginningAndEnding() { Map<String, String> map = new HashMap<>(); //获取当前自然周中每天的日期集合 Date date = new Date(); DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); //这里设置一周开始时间是星期一 c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday String beginTime = format.format(c.getTime()); //获取当前自然周的起始时间 map.put("begin", beginTime); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday String endTime = format.format(c.getTime()); //当前自然周的截止时间 map.put("end", endTime); return map; } |
2、根据时间段来获取当前时间段内的每一天
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
/** * 获取开始和结束之间的每一天 * * @param beginTime 开始时间 * @param endTime 结束时间 * @param type 返回列表中的时间格式 * @return 返回日期字符串列表 */ public static List<String> weekDays(Date beginTime, Date endTime,String type) { DateFormat format=new SimpleDateFormat(type); //设置开始时间 Calendar calStart = Calendar.getInstance(); calStart.setTime(beginTime); //设置结束时间 Calendar calEnd = Calendar.getInstance(); calEnd.setTime(endTime); //返回的日期集合 List<String> dateList = new ArrayList<String>(); //每次循环给calStart日期加一天,直到calBegin.getTime()时间等于dEnd dateList.add(format.format(calStart.getTime())); while (endTime.after(calStart.getTime())) { //根据日历的规则,为给定的日历字段添加或减去指定的时间量 calStart.add(Calendar.DAY_OF_MONTH, 1); dateList.add(format.format(calStart.getTime())); } return dateList; } |
如果对你有用,点个赞吧!!! from:https://blog.csdn.net/weixin_44826433/article/details/110677362
View DetailsJava获得当前日期是星期几
第一种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/** * 获取当前日期是星期几<br> * * @param date * @return 当前日期是星期几 */ public String getWeekOfDate(Date date) { String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; Calendar cal = Calendar.getInstance(); cal.setTime(date); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } |
第二种方法: 使用SimpleDateFormat格式化日期
1 2 3 4 |
Date date = new Date(); SimpleDateFormat dateFm = new SimpleDateFormat("EEEE"); String currSun = dateFm.format(date); System.out.println(currSun); |
注:格式化字符串存在区分大小写 对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“七月”;MM代表月份,如“07”;yyyy代表年份,如“2017”;dd代表天,如“05” from:https://blog.csdn.net/u013456370/article/details/74373410
View Details科普:Kafka是啥?干嘛用的?
Kafka概述:
Kafka由 linked-in 开源 。
kafka-高产出的分布式消息系统(A high-throughput distributed messaging system)。
Kafka是一个高吞吐、分布式、基于发布订阅的消息系统,利用Kafka技术可以在廉价的PC Server上搭建起大规模消息系统。
Kafka的特性:
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作;
可扩展性:kafka集群支持热扩展;
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;
容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败);
高并发:支持数千个客户端同时读写;
支持实时在线处理和离线处理:可以使用Storm这种实时流处理系统对消息进行实时进行处理,同时还可以使用Hadoop这种批处理系统进行离线处理;
Docker 安装 MongoDB
MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序。 1、查看可用的 MongoDB 版本 访问 MongoDB 镜像库地址: https://hub.docker.com/_/mongo?tab=tags&page=1。 可以通过 Sort by 查看其他版本的 MongoDB,默认是最新版本 mongo:latest。 你也可以在下拉列表中找到其他你想要的版本: 此外,我们还可以用 docker search mongo 命令来查看可用版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ docker search mongo NAME DESCRIPTION STARS OFFICIAL AUTOMATED mongo MongoDB document databases ... 1989 [OK] mongo-express Web-based MongoDB admin int... 22 [OK] mvertes/alpine-mongo light MongoDB container 19 [OK] mongooseim/mongooseim-docker MongooseIM server the lates... 9 [OK] torusware/speedus-mongo Always updated official Mon... 9 [OK] jacksoncage/mongo Instant MongoDB sharded cluster 6 [OK] mongoclient/mongoclient Official docker image for M... 4 [OK] jadsonlourenco/mongo-rocks Percona Mongodb with Rocksd... 4 [OK] asteris/apache-php-mongo Apache2.4 + PHP + Mongo + m... 2 [OK] 19hz/mongo-container Mongodb replicaset for coreos 1 [OK] nitra/mongo Mongo3 centos7 1 [OK] ackee/mongo MongoDB with fixed Bluemix p... 1 [OK] kobotoolbox/mongo https://github.com/kobotoolb... 1 [OK] valtlfelipe/mongo Docker Image based on the la... 1 [OK] |
2、取最新版的 MongoDB 镜像 这里我们拉取官方的最新版本的镜像:
1 |
$ docker pull mongo:latest |
3、查看本地镜像 使用以下命令来查看是否已安装了 mongo:
1 |
$ docker images |
在上图中可以看到我们已经安装了最新版本(latest)的 mongo 镜像。 4、运行容器 安装完成后,我们可以使用以下命令来运行 mongo 容器:
1 |
$ docker run -itd --name mongo -p 27017:27017 mongo --auth |
参数说明: -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。 --auth:需要密码才能访问容器服务。 5、安装成功 最后我们可以通过 docker ps 命令查看容器的运行信息: 接着使用以下命令添加用户和设置密码,并且尝试连接。
1 2 3 4 5 |
$ docker exec -it mongo mongo admin # 创建一个名为 admin,密码为 123456 的用户。 > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); # 尝试使用上面创建的用户信息进行连接。 > db.auth('admin', '123456') |
MongoDB 6.0 及以上版本使用以下命令:
1 |
docker exec -it mongo mongosh admin |
from:https://www.runoob.com/docker/docker-install-mongodb.html
View Details