[青少年CTF]reverse-EzAndroid
0x01 题目
附件是一个apk包
0x02 解题
解压apk包之后发现被加密了,用apktools进行解密,然后反编译得到源码:
找到入口类,在com.example.haveaandroid:
源码如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package com.example.haveaandroid;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.ItemTouchHelper;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/* loaded fr ...
[青少年CTF]Web-CheckMe01-04 writeup
0x01 CheckMe01进入环境,随意输入字符:
看一下代码,发现$keys = base64_decode(urldecode($keys));
说明需要先将qsnctf字符进行base64编码才能使$keys=="qsnctf"判断成立。
所以输入:
1cXNuY3Rm
得到flag
0x02 CheckMe02打开题目的环境,发现是文件包含题:
通过
1?url=php://filter/read=convert.base64-encode/resource=index.php
php伪协议可以查看到index.php的源码的base64:
1PHRpdGxlPkNoZWNrTWUtMDI8L3RpdGxlPg0KPD9waHANCnByaW50KCI8aDE+5qyi6L+O5p2l5YiwQ2hlY2tNZS0wMu+8jOW/q+adpeWvu+aJvuS9oOeahEZsYWflubbmj5DkuqTlkKfjgII8L2gxPiIpOw0KPz4NCjw/cGhwDQplcnJvcl9yZXBvcnRpbmcoMCk7DQokdXJsPSRfR0VUWyd1cmwnXTsNCmlmKGlzc2V0KCR1cmwpKXsNCiAgICBpbmNsdWRlKCR1cmwpOw0KfQ0KICAgIA0KPz4NCjxodG1sIGxh ...
[青少年CTF]misc-上号
0x01 题目
附件是一个流量包``files.pcapng`
0x02 解题拿到流量包,发现只有102kb大小,直接一个binwalk:
1binwalk -e files.pcapng
提取到一个图片,打开是这样的:
用线上steg工具看看:StegOnline (georgeom.net)
没看到什么有用的信息,倒是在strings中发现了qsnctf这个神秘代码。。。
推测是用steghide隐藏的flag,
打开kali,上号!
用steghide提取flag:
1steghide extract -sf shanghao.jpg
输入密码:qsnctf
提取成功:
1qsnctf{07f453cd-8fd2-44e4-bdd1-160b0c503d10}
[青少年CTF]misc-base64隐写
0x01 题目
附件: ComeOn!.txt
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170STJsdVkyeDFaR1U4YVc5emRISmxZVzArQ2c9PQ1=STJsdVkyeDFaR1U4YzNSeWFXNW5QZ289DQ==STJsdVkyeDFaR1U4WTNOMGNtbHVaejRLDV==STJsdVkyeDFaR1U4WTNOMFpHbHZQZ289DQ==STJSbFptbHVaU0J0WVhodUlEaz ...
记录一次安装Fedora
记录一次安装FedoraFedora是一个Linux发行版,是一款由全球社区爱好者构建的面向日常应用的快速、稳定、强大的操作系统。它允许任何人自由地使用、修改和重发布,目标是创建一套新颖、多功能并且自由的操作系统。
0x01 官网下载Fedora系统镜像文件官网:Fedora (getfedora.org)
点击:
等待下载完成。
0x02 通过VMware虚拟机进行安装
根据过程一步步安装完成即可。
0x03 更换软件源地址进入yum源的存储文件,进行备份和替换。
12mv /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.backupmv /etc/yum.repos.d/fedora-updates.repo /etc/yum.repos.d/fedora-updates.repo.backup
12wget -O /etc/yum.repos.d/fedora-updates.repo http://mirrors.aliyun.com/repo/fedora-updates.repowget -O /etc/yum.repos.d/fedora.repo http://mirrors.aliyun.com/repo/fedora.repo
更新yum缓存,使更改失效。
1yum makecache
...
Typora安装和破解教程
Typora安装和破解教程
Typora下载:Typora_0.11.18.exe - Q1jun Cloud
替换文件:TyporaApp.zip - Q1jun Cloud
1. 安装Typora_0.11.18版本(仅支持)从我给的链接下载安装包进行安装。
安装成功后会提示报错,需要下载新的版本,直接无视并关闭页面进入下一步。
2. 替换文件进行破解下载第二个链接中的压缩包TyporaApp.zip,将其中2099文件夹中的文件app.asar替换掉安装Typora文件夹中的\Typora\resources\app.asar文件。
提取出来:
找到Typora的安装文件夹:
方法:安装完Typora后在桌面会有图标,右击图标,点击打开文件位置,找到安装的具体目录。(如果还是快捷方式,则重复本步骤)
找到app.asar文件,并将其用压缩包中的文件替换。
3. 打开Typora,完成安装和破解重新打开Typora,完成破解安装。
本教程仅供参考学习,请勿用作商业用途!
敏感信息脱敏函数
给敏感字符串进行替换中间部分,从而达到脱敏的效果。代码如下:
1234567891011121314151617181920212223242526272829303132333435363738394041def HideMid(str1, count: int, fix='*'): """ #隐藏/脱敏 中间几位 str 字符串 count 隐藏位数 fix 替换符号 """ if not str1: return '' count = int(count) str_len = len(str1) ret_str = '' if str_len == 1: return str1 elif str_len == 2: ret_str = str1[0] + '*' elif count == 1: mid_pos = int(str_len / 2) ret_str = str1[:mid_pos] + fix + str1[mid_pos + 1:] else ...
Kubernetes笔记 10
10. DashBoard之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,还可以监控应用的状态,执行故障排查以及管理kubernetes中各种资源。
10.1 部署Dashboard
下载yaml,并运行Dashboard
1234567891011121314151617181920212223242526272829303132# 下载yaml[root@k8s-master01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml# 修改kubernetes-dashboard的Service类型kind: ServiceapiVersion: v1metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboardspec: type: NodePort # 新增 ports: ...
DNSLog平台搭建
0x01 前言搭建一个DNSLog平台需要准备以下:
购买一个合法域名
具有公网IP的服务器
我使用的是阿里云ECS服务器(Linux)、阿里云域名解析服务,其他平台类似。
我们都知道DNS就是将域名解析为ip,用户在浏览器上输入一个域名A.com,
就要靠DNS服务器将A.com解析到它的真实ip127.0.0.1,
这样就可以访问127.0.0.1服务器上的相应服务。
DNSlog就是存储在DNS服务器上的域名信息,
它记录着用户对域名 www.baidu.com 等的访问信息,类似日志文件。
0x02 域名解析配置
首先在域名解析中添加一条A记录,记录值为服务器公网IP:
创建NS记录,记录值为上一步创建的A记录:
在域名控制台设置自定义DNS Host,创建DNS服务器:
0x03 云服务器配置
下载DNSLog平台到服务器
GitHub地址: https://github.com/lanyi1998/DNSlog-GO.git
在服务器中输入
1wget https://github.com/lanyi1998/DNSlog-GO/releases/download/1.5.2/DNSlog-GO-linux.zip
解压
1unzip DNSlog-GO-linux.zip
进入目录后使用screen保证DNSLog平台可以在后 ...
Kubernetes笔记 9
9. 安全认证9.1 访问控制概述Kubernetes作为一个分布式集群的管理工具,保证集群的安全性是其一个重要的任务。所谓的安全性其实就是保证对Kubernetes的各种客户端进行认证和鉴权操作。
客户端
在Kubernetes集群中,客户端通常有两类:
User Account:一般是独立于kubernetes之外的其他服务管理的用户账号。
Service Account:kubernetes管理的账号,用于为Pod中的服务进程在访问Kubernetes时提供身份标识。
认证、授权与准入控制
ApiServer是访问及管理资源对象的唯一入口。任何一个请求访问ApiServer,都要经过下面三个流程:
Authentication(认证):身份鉴别,只有正确的账号才能够通过认证
Authorization(授权): 判断用户是否有权限对访问的资源执行特定的动作
Admission Control(准入控制):用于补充授权机制以实现更加精细的访问控制功能。
9.2 认证管理Kubernetes集群安全的最关键点在于如何识别并认证客户端身份,它提供了3种客户端身份认证方式:
HTTP Base认证:通过用户名+密码的方式认证
1这种认证方式是把“用户名:密码”用BASE64算法进行编码后的字符串放在HTTP请求中的Header Authorization域里发送给服务端 ...
Kubernetes笔记 8
8. 数据存储在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。
Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存储。Volume的生命容器不与Pod中单个容器的生命周期相关,当容器终止或者重启时,Volume中的数据也不会丢失。
kubernetes的Volume支持多种类型,比较常见的有下面几个:
简单存储:EmptyDir、HostPath、NFS
高级存储:PV、PVC
配置存储:ConfigMap、Secret
8.1 基本存储8.1.1 EmptyDirEmptyDir是最基础的Volume类型,一个EmptyDir就是Host上的一个空目录。
EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时, EmptyDir中的数据也会被永久删除。 EmptyDir用途如下:
临时空间,例如用于某些应用程序运行时所需的 ...
Kubernetes笔记 7
7. Service详解7.1 Service介绍在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。
为了解决这个问题,kubernetes提供了Service资源,Service会对提供同一个服务的多个pod进行聚合,并且提供一个统一的入口地址。通过访问Service的入口地址就能访问到后面的pod服务。
Service在很多情况下只是一个概念,真正起作用的其实是kube-proxy服务进程,每个Node节点上都运行着一个kube-proxy服务进程。当创建Service的时候会通过api-server向etcd写入创建的service的信息,而kube-proxy会基于监听的机制发现这种Service的变动,然后它会将最新的Service信息转换成对应的访问规则。
123456789101112# 10.97.97.97:80 是service提供的访问入口# 当访问这个入口的时候,可以发现后面有三个pod的服务在等待调用,# kube-proxy会基于rr(轮询)的策略,将请求分发到其中一个pod上去# 这个规则会同时在集群内的所有节点上都生成,所以在任何一个节点上访问都可以。[root@node1 ~]# ipvsadm -LnIP Virtua ...
Kubernetes笔记 6
6. Pod控制器详解6.1 Pod控制器介绍Pod是kubernetes的最小管理单元,在kubernetes中,按照pod的创建方式可以将其分为两类:
自主式pod:kubernetes直接创建出来的Pod,这种pod删除后就没有了,也不会重建
控制器创建的pod:kubernetes通过控制器创建的pod,这种pod删除了之后还会自动重建
什么是Pod控制器
Pod控制器是管理pod的中间层,使用Pod控制器之后,只需要告诉Pod控制器,想要多少个什么样的Pod就可以了,它会创建出满足条件的Pod并确保每一个Pod资源处于用户期望的目标状态。如果Pod资源在运行中出现故障,它会基于指定策略重新编排Pod。
在kubernetes中,有很多类型的pod控制器,每种都有自己的适合的场景,常见的有下面这些:
ReplicationController:比较原始的pod控制器,已经被废弃,由ReplicaSet替代
ReplicaSet:保证副本数量一直维持在期望值,并支持pod数量扩缩容,镜像版本升级
Deployment:通过控制ReplicaSet来控制Pod,并支持滚动升级、回退版本
Horizontal Pod Autoscaler:可以根据集群负载自动水平调整Pod的数量,实现削峰填谷
DaemonSet:在集群中的指定Node上运行且仅运行一个副本,一般用于守 ...
Kubernetes笔记 5
5. Pod详解5.1 Pod介绍5.1.1 Pod结构
每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类:
用户程序所在的容器,数量可多可少
Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个:
可以以它为依据,评估整个Pod的健康状态
可以在根容器上设置Ip地址,其它容器都此Ip(Pod IP),以实现Pod内部的网路通信
1这里是Pod内部的通讯,Pod的之间的通讯采用虚拟二层网络技术来实现,我们当前环境用的是Flannel
5.1.2 Pod定义下面是Pod的资源清单:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778apiVersion: v1 #必选,版本号,例如v1kind: Pod #必选,资源类型,例如 Podmetadata: #必选,元数据 name: string #必选,Pod名称 namespace: string #Pod所属的命名空间,默认为"default" labels: ...
Kubernetes笔记 4
4. 实战入门本章节将介绍如何在kubernetes集群中部署一个nginx服务,并且能够对其进行访问。
4.1 NamespaceNamespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离。
默认情况下,kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那此时就可以将两个Pod划分到不同的namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的”组”,以方便不同的组的资源进行隔离使用和管理。
可以通过kubernetes的授权机制,将不同的namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,例如CPU使用量、内存使用量等等,来实现租户可用资源的管理。
kubernetes在集群启动之后,会默认创建几个namespace
123456[root@master ~]# kubectl get namespaceNAME STATUS AGEdefault Active 45h # 所有未指定Namespace的对象都会被分配在default命 ...
Kubernetes笔记 3
3. 资源管理3.1 资源管理介绍在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。
kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。
kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在Pod中,而kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。
Pod可以提供服务之后,就要考虑如何访问Pod中服务,kubernetes提供了Service资源实现这个功能。
当然,如果Pod中程序的数据需要持久化,kubernetes还提供了各种存储系统。
学习kubernetes的核心,就是学习如何对集群上的Pod、Pod控制器、Service、存储等各种资源进行操作
3.2 YAML语言介绍YAML是一个类似 XML、JSON 的标记性语言。它强调以数据为中心,并不是以标识语言为重点。因而YAML本身的定义比较简单,号称”一种人性化的数据格式语言”。
1234<heima> <age>15</age> <address>Beijing</address></heima>
12 ...
Kubernetes笔记 2
2. kubernetes集群环境搭建2.1 前置知识点目前生产部署Kubernetes 集群主要有两种方式:
kubeadm
Kubeadm 是一个K8s 部署工具,提供kubeadm init 和kubeadm join,用于快速部署Kubernetes 集群。
官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
二进制包
从github 下载发行版的二进制包,手动部署每个组件,组成Kubernetes 集群。
Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。
2.2 kubeadm 部署方式介绍kubeadm 是官方社区推出的一个用于快速部署kubernetes 集群的工具,这个工具能通过两条指令完成一个kubernetes 集群的部署:
创建一个Master 节点kubeadm init
将Node 节点加入到当前集群中$ kubeadm join <Master 节点的IP 和端口>
2.3 安装要求在开始之前,部署Kubernetes 集群机器需要满足以下几个条件:
一台或多台机器,操作系统CentOS7.x-86_x ...
Kubernetes笔记 1
1. Kubernetes介绍1.1 应用部署方式演变在部署应用程序的方式上,主要经历了三个时代:
传统部署:互联网早期,会直接将应用程序部署在物理机上
优点:简单,不需要其它技术的参与
缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响
虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境
优点:程序环境不会相互产生影响,提供了一定程度的安全性
缺点:增加了操作系统,浪费了部分资源
容器化部署:与虚拟化类似,但是共享了操作系统
优点:
可以保证每个容器拥有自己的文件系统、CPU、内存、进程空间等
运行应用程序所需要的资源都被容器包装,并和底层基础架构解耦
容器化的应用程序可以跨云服务商、跨Linux操作系统发行版进行部署
容器化部署方式给带来很多的便利,但是也会出现一些问题,比如说:
一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器
当并发访问量变大的时候,怎么样做到横向扩展容器数量
这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件:
Swarm:Docker自己的容器编排工具
Mesos:Apache的一个资源统一管控的工具,需要和Marathon结合使用
Kubernetes:Google开源的的容器编排工具
1.2 kuber ...
[花椒生存]使用IPV6进入花椒生存服务器
使用IPV6进入花椒生存服务器
服务器IPv4地址:mc.q1jun.cn
服务器IPv6地址:v6.q1jun.cn
服务器QQ交流群:912457864
服务器开x黑啦:https://kook.top/V0aEIh
0x01 什么是IPv6其实,IPv6并不是一个新鲜事物。早在上个世纪90年代,它就已经诞生了。我相信大部分的小伙伴或多或少听说过它。
IPv6的全称是Internet Protocol version 6。其中,Internet Protocol译为“互联网协议”。所以,IPv6就是互联网协议第6版。
既然IPv6是第6版(Version 6),说明在它之前有更老的版本。我们现在广泛使用的,就是IPv4,也就是第4版(Version 4)。
0x02 为什么要用IPv6IPv4迄今为止已经使用了30多年。最早期的时候,互联网只是设计给美国军方用的,根本没有考虑到它会变得如此庞大,成为全球网络。
尤其是进入21世纪后,随着计算机和智能手机的迅速普及,互联网开始爆发性发展,越来越多的上网设备出现,越来越多的人开始连接互联网。这就意味着,需要越来越多的IP地址。
IPv4到底一共有多少个IP地址呢?答案是2的32次方,也就是约42.9亿个。
所以说,IPv4地址池接近枯竭,根本无法满足互联网发展的需要。人们迫切需要更高版本的IP协议,更大数量的IP地址池。(有点像固 ...
计算居民身份证校验码
计算校验位记录一个计算第二代居民身份证最后一位校验位的算法:
12345678910111213141516171819202122232425<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <script> function calc(str){ var coeff = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1]; var suffix = ['1','0',' ...