K8s学习笔记
学习笔记
K8s
资源类型
k8s中的对象(资源类型)主要有4种,分为:
资源对象:Pod Deployment Statefulset Node Namespace等
存储对象:Volumn PersistentVolume等
策略对象
身份对象
每个对象会有两个字段来描述其信息,为Sepc和Status,前者为对象会被调度到的理想状态、后者为对象的当前状态,go-client中的Controller类就是专门做这件事的,他会通过ListWatch监听对象的当前状态,然后与其理想状态做对比,再进行对应的操作。
Raft
Raft协议为k8s的分布式存储提供了节点间状态同步的基础,核心算法为选举和日志复制
动画演示http://thesecretlivesofdata.com/raft/
Controller
Controller是k8s设计用来控制资源的类,可以从提供的官方示例来学习https://github.com/kubernetes/sample-controller.git,从零搭建一个自己的Controller网上也有不少案例,一个比较不错的:https://blog ...
Angr入门简单使用
使用了一个两个数的数组,在八次运算后看是否相同,如果相同输出win
方法一
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#!/usr/bin/env python3# -*- coding: utf-8 -*-"""Author: xoreaxeaxeaxModified by David Manouchehri <manouchehri@protonmail.com>Original at https://lists.cs.ucsb.edu/pipermail/angr/2016-August/000167.htmlThe purpose of this example is to show how to use symbolic write addresses."""import angrimport claripydef main(): ...
CTF-HWSCTF2023 Winter WP
Reverse
easyre
用了多线程检查结果
密钥通过动调得到,srand应该在某个地方调用了但是没找到。
1234567891011121314151617181920212223242526272829303132333435#include "stdio.h"typedef u_int32_t uint32_t;void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]){ unsigned int i; uint32_t v0 = v[0], v1 = v[1], delta = 0x9E3779B9, sum = delta * num_rounds; for (i = 0; i < num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum >> 11) & 3] ...
Pwn-gdb使用大全
https://blog.csdn.net/Breeze_CAT/article/details/103789233
Afl-QEMU安装
在2.52b版本中,由于年代久远,build_qemu_support.sh文件需要更新一下
将以下内容写到patches的memfd_create.diff中
12345678910111213diff -ru qemu-2.10.0-clean/util/memfd.c qemu-2.10.0/util/memfd.c--- qemu-2.10.0-clean/util/memfd.c 2018-11-20 18:11:00.170271506 +0100+++ qemu-2.10.0/util/memfd.c 2018-11-20 18:11:13.398423613 +0100@@ -37,7 +37,7 @@ #include <sys/syscall.h> #include <asm/unistd.h> -static int memfd_create(const char *name, unsigned int flags)+int memfd_create(const char *name, unsigned int flags) ...
折腾安装Afl-Dyninst
巨无语,弄了两天
首先根据afl-dyninst的更新时间,选择到最近的一个commit - 332198e9abd581de1070f1010932067bcd2ed60b
https://github.com/dyninst/dyninst/tree/332198e9abd581de1070f1010932067bcd2ed60b
下载包,安装
1sudo apt-get install libiberty-dev libboost-all-dev libtbb-dev libdwarf-dev
还需要下载elfutils-0.173版本,默认编译和安装目录即可,主要是apt里面的版本太老了。
解压dyninst,到文件夹下
12345mkdir build && cd buildcmake .. -DBOOST_LIBRARYDIR=/usr/lib/x86_64-linux-gnu -DCMAKE_INSTALL_PREFIX=../target -DLIBELF_LIBRARIES=/usr/local/lib/libelf.so -DLIBELF_INCLU ...
AFL-机制剖析
来源:
https://tttang.com/archive/1595/
https://paper.seebug.org/1732/
这篇文章主要目的是梳理afl的关键机制,即编译和fuzz主要逻辑的梳理。
编译过程
afl-gcc
我们主要用afl-gcc对源码进行编译和插桩。
afl-gcc实际上是对gcc命令的封装。
这里使用了一个关键函数find_as,用于寻找afl-as的路径。
12345678910111213141516// afl-gcc.c: 310int main(int argc, char** argv) { ... find_as(argv[0]); edit_params(argc, argv); execvp(cc_params[0], (char**)cc_params); FATAL("Oops, failed to execute '%s' - check your PATH", cc_params[0]); return 0;}
在命令的转换过程中,加入了-B选项,用于设置 ...
Reverse 训练计划
给战队小孩锻炼逆向能力,每次会出一个专题练习。
Task 动态调试
了解如何使用ida进行动态调试
https://adworld.xctf.org.cn/challenges/details?hash=84657b0c-e01c-4426-b1a1-a5d1d630146b_2&task_category_id=4
https://adworld.xctf.org.cn/challenges/details?hash=bbfa61dd-8934-4c0d-be63-9b7acb7f8d16_2
目标:通过动态调试,修改程序或者让程序暂停在某个状态,从而获取flag
限制:使用IDA进行动态调试
upx壳
目标:了解upx脱壳方法,了解通过修改节表名和oep脱壳两种方式的高级脱壳方法
https://wwi.lanzoup.com/i8ElI0gjx9oh
这周学习python逆向,基础内容的话先自己去找些入门文章看看然后再来做目标:了解python逆向方法,文件头修改方法,pyz加密解密,z3solver使用
hint:https://www.zrzz.site/pos ...
CTF-Reverse-IDA添加结构体
手动创建
shift F9调出窗口
右键insert一个
在ends处按d键,或者右键添加数组,还能对字段改名,从而插入结构体
类C语法创建结构体
shift + F1调出窗口,右键插入,使用语法插入即可。例如
1234struct student { char name[16]; int age;}