首页
关于本站
友情链接
全站统计
更多
访客留言
精美壁纸
推荐
小鹿云计算
Search
1
疫情实时数据
10,905 阅读
2
关于 BootLoader
10,344 阅读
3
Linux环境下简单搭建Minecraft服务器(java版)
9,180 阅读
4
申请了萌ICP备案
9,164 阅读
5
中华人民共和国网络安全法
6,486 阅读
博客
学习笔记
技术
每日一拍
登录
Search
标签搜索
golang
源码
jsdelivr
server
火烧云
萌ICP备案
MyBatis
Hibernate
博客更名
风景
root
BootLoader
疫情
实时
NestJS
Express
雪景
山景
操场
ddos
绎泽
累计撰写
42
篇文章
累计收到
88
条评论
今日撰写
0
篇文章
首页
栏目
博客
学习笔记
技术
每日一拍
页面
关于本站
友情链接
全站统计
访客留言
精美壁纸
推荐
小鹿云计算
用户登录
登录
搜索到
4
篇与
学习笔记
的结果
2022-07-13
Gin框架学习笔记
Gin是一个基于go语言编写的web框架,因为Gin的路由库基于httprouter开发的,性能非常好,支持Restful api规范安装go get -u github.com/gin-gonic/gin第一个demopackage main import "github.com/gin-gonic/gin" import "net/http" func main() { g := gin.Default() g.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "hallo word") }) g.Run() }go run main.gog.Run()是将应用部署到本地服务器上,默认端口为8080,可设置端口,g.Run(":2333")路由r.GET("/test/:name", func(c *gin.Context) { name := c.Param("name") c.String(http.StatusOK, name) }) g.Run(":6666")127.0.0.1:6666/test如果没有传递参数将会输出DefaultQuery的默认参数test传递参数后 127.0.0.1:6666/test?name=wordPOST请求index.html<input type="text" name="user" placeholder="name"> <input type="password" name="pass" placeholder="pass"> <input type="submit" value="提交">main.gor.POST("/form", func(c *gin.Context) { types := c.DefaultPostForm("type", "post") user := c.PostForm("user") pass := c.PostForm("pass") c.String(http.StatusOK, fmt.Sprintf("user:%s,pass:%s,type:%s", name, pass, types)) }) r.Run()
2022年07月13日
693 阅读
0 评论
0 点赞
2022-07-13
Web安全学习笔记
常见web工具:burpsuite:通过代理渗透,可重放HTTP请求,来分析HTTP响应curl:通过url方式传输数据,可用于抓取页面(执行请求),监控网络等等postmainhackbar quantumwappalyzer文件上传漏洞:没有足够的安全约束的情况下,允许上传恶意文件,例如恶意脚本,webshell等等文件上传漏洞关键点在于绕过由于法律限制的原因,禁止对其他网站非法攻击,因此需要在本地或者在自己的服务器上建立靶场渗透环境,这边使用的是bwapp(全称为buggy web Application)这边使用的是docker运行bwapp,也可以下载bwapp,来自己搭建(https://sourceforge.net/projects/bwapp/files/)docker pull raesene/bwappdocker run -d -p 0.0.0.0:80:80 raesene/bwapp访问127.0.0.1/install.php点击here来初始化,或者直接访问127.0.0.1/install.php?install=yes创建账号信息,点击new user,或者直接访问127.0.0.1/user_new.php点击login,或者直接访问127.0.0.1/login.php,根据刚才的账号信息进行登录简单接触文件上传漏洞chose your bug选择unrestricted File Upload(未经严格审记的文件上传),安全级别选择low(set your security level)上传一句话木马,创建shell.php文件,添加<?php @eval($_POST["test"])?>通过curl触发,执行curl -d 'test=echo getcwd();' http://127.0.0.1/images/shell.php可以看到成功触发shell.php,并且服务器返回了当前执行的目录后缀名绕过安全级别选择medium(set your security level)常见后缀名验证方式有,黑名单(禁止哪些后缀上传),白名单(只允许哪些后缀上传)这里的靶场环境的web server为Apache,因此需要了解Apache解析器模块.htaccess绕过,当黑名单没有限制上传.htaccess文件时,并且web sever也支持.htaccess时上传.htaccess文件,内容为:AddType application/x-httpd-php jpg上传木马,shell.jpgAddType application/x-httpd-php jpg的意思是,jpg文件按照php文件的方式解析大小写绕过大小写用于Windows平台环境下,在Windows中,大小写是不敏感的,而在Linux环境下,大小写是敏感的Windows文件流绕过利用windows平台的NTFS文件系统的文件流特性,设置文件时,默认使用未命名的文件流,但是也可以创建其他命名的文件流例如:echo hallo,word > hallo.txt:a.txt echo hallo > hallo.txt echo 666 > hallo.txt::$data第一个例子中,hallo,word并没有写入到hallo.txt,而是写入到了hallo.txt下的a.txt文件流中第三个例子中,666写入到了hallo.txt默认文件流中针对于白名单进行绕过截断绕过(环境要求:php>5.3.42,magic_quotes_gpc关闭)搭配burpsuite来拦截http请求上传shell.php,通过拦截修改请求报文,修改为shell.php$00.jpg$00在url中会解析为0,而在ASCII中0又表示为字符串结束,因此当url出现$00时,表示字符串读取结束因此在上传shell.php$00.jpg时,对于先上传后检测的服务端来说,实质上传的是shell.php
2022年07月13日
279 阅读
0 评论
0 点赞
2022-04-19
Flutter框架学习笔记
Flutter是谷歌开源的跨平台UI框架,可以快速在iOS和Android上构建高质量的原生用户界面,可在Windows,Linux,Android,Web,iOS,Mac等6大平台上开发应用闲鱼和Now直播,美团,快手都使用了Flutter获取Flutterhttps://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_2.10.3-stable.zip添加path环境变量由于Flutter库是在google那,因此需要设置第三方可信镜像库设置PUB_HOSTED_URL和FLUTTER_STORAGE_BASE_URL环境变量PUB_HOSTED_URL设置为https://pub.flutter-io.cnFLUTTER_STORAGE_BASE_URL设置为https://storage.flutter-io.cn(flutter-io.cn所提供的镜像由中国的Flutter开发者社区提供和维护)其他可信第三方镜像库:腾讯云镜像PUB_HOSTED_URL(https://mirrors.cloud.tencent.com/dart-pub)FLUTTER_STORAGE_BASE_URL(https://mirrors.cloud.tencent.com/flutter)清华大学镜像PUB_HOSTED_URL(https://mirrors.tuna.tsinghua.edu.cn/dart-pub)FLUTTER_STORAGE_BASE_URL(https://mirrors.tuna.tsinghua.edu.cn/flutter)添加Flutter环境变量path,解压路径flutterbin执行where.exe flutter dart,如果有反应,说明path环境配置完成(如果要开发安卓的话,需要安装jdk,Android Studio,Android Jdk,可执行flutter doctor检查依赖(如果是X表示没依赖,需要安装))这里用Visual Studio Code的Flutter插件创建第一个demo(项目名必须全小写,可用_下划线)flutter create flutterdemo启动项目(编译执行)flutter runDart是静态类型语言,它会在定义时绑定数据类型(var)Dart允许一个类中有多个构造函数,在new初始化时,可选择类的某个构造函数Dart库管理(pub.dev),在pubspec.yaml添加库实质上Dart和JavaScript很相似,只是它有抽象和泛型(ts也有泛型,抽象类就是类似于golang的接口,只定义不实现)Dart也是单线程执行,主线程外也有宏任务队列和事件队列(可以理解为JavaScript中的宏任务)Dart执行过程:执行main()函数,判断是微任务还是事件队列,是微任务则插入微任务队列,是宏任务则插入宏任务队列,执行完成后(主线程),会执行微任务队列和事件队列,以及判断微任务队列和事件队列是否为空,当为空时程序执行结束flutter项目下的lib/main.dart,class MyApp类下修改为 home: const MyHomePage(title: 'Hallo word'), // 当前title信息在return Scaffold下的body: Center下的,修改为children: [const Text('Hallo word',),运行后可以看到一个title以及内容都为Hallo word的appflutter自带了可视化工具,Dart DevTools自己写一个main.dartvoid main() => runApp(MyApp()); class MyApp extends StatelessWidget{ @override Widget build(BuildContext context){ return MaterialApp( title: "hallo word", // app的title theme: ThemeData( primarySwatch: Colors.orange, // 页面的主题颜色 ) home: Scaffold( appBar: AppBar( title: Text("hallo word"), // 当前页面的title ), body: Center( child: Text('hallo flutter'), // 当前页面的文本 ), ), ); } }flutter run(热更新,在执行中输入r或者R)(按p为显示网格,按q为退出,按o为切换android和ios的预览模式)这边用安卓实机调试(也可以用安卓模拟器,例如夜神模拟器)使用flutter devices命令检查是否寻找到该机,记得开启开发者模式,打开调试,允许调试,开启允许USB安装,数据线连接到电脑,并且安装和实机(虚拟机)中的安卓版本sdk,如果官网打不开,可去https://www.androiddevtools.cn/下载或者在Android Studio中安装,下载安装Google USB Driveer(也可以在Android Studio中安装)flutter生命周期flutter组件分为无状态组件和有状态组件,无状态组件就是单纯显示内容的,没有逻辑计算,因此只渲染一次,有状态组件就是具备逻辑交互功能的组件,会因为数据发生变化而多次渲染,这个概念和JavaScript是一样的无状态组件的生命周期只有一个,build有状态组件生命周期分别为createState:该钩子在StatefulWidget中创建State的方法,当StatefulWidget被调用时会立即执行 createStateinitState:该钩子为State初始化调用,一般用来初始化State变量的赋值,与服务端交互获取服务端数据以后调用setState来设置初始化State。didChangeDependencies:该钩子在该组件依赖的State发生变化时会被调用(这里的State发生变化指全局State变化,例如当InheritedWidget发送变化),build跟着触发build:返回需要渲染的Widget,一般有来返回Widget相关逻辑,build会被调用多次setState:当状态发送变化时触发,该钩子被执行后,必然会调用build钩子reassemble:该钩子在debug模式下,每次热重载都会执行该钩子,一般来用做一些debug操作didUpdateWidget:该钩子主要是在组件重新构建时调用,例如热重载,该钩子被执行后,必然会调用build钩子deactivate:该钩子在组件被移除节点后会被调用,如果没有插入到其他节点,会继续触发dispose钩子dispose:永久移除该组件,释放组件资源,一个组件的生命终点
2022年04月19日
253 阅读
0 评论
2 点赞
2022-03-20
Nestjs学习笔记
NestJS是一个nodejs服务端应用开发框架,基于typescript开发,http服务框架默认为Express,也支持Fastify,支持面向对象,函数式以及函数响应式编程安装npm install -g @nestjs/cli创建demo项目nest new demo选择使用包管理器(支持npm,yarn,pnpm)创建完成后可以看到src目录,是典型的MVC架构app.controller.ts(应用路由控制器)app.controller.spec.ts(应用控制器单元测试)app.module.ts(应用模块文件)app.service.ts(应用服务文件)main.ts(应用程序入口文件,实质上是async/await异步函数(bootstrap()))从main.ts入口文件可以看出,nest应用实例是基于NestFactory类(该类来源于@nestjs/core,nest核心程序)对外暴露的方法创建的启动项目npm run start访问 http://localhost:3000/ ,如果看到Hello World!表示启动成功nestjs cli支持对mvc模块的生成创建控制器nest g controller 名称创建服务nest g service 名称创建模块nest g module 名称创建异常过滤器nest g filter 名称创建拦截器nest g interceptor 名称创建中间件nest g middleware 名称创建管道 nest g pipe 名称创建守卫nest g gu 名称控制器(controller)controller负责接收请求和处理响应
2022年03月20日
1,141 阅读
0 评论
1 点赞