July 20, 2024
#CS

一些命令

With LLM / 划分并开启 Swap 检查当前的 Swap 状态: 使用以下命令查看当前系统的 Swap 使用情况: swapon --show 创建 Swap 文件 创建一个 Swap 文件,例如 2GB 大小的文件: fallocate -l 2G /swapfile 或者 / sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 设置文件的权限和格式: chmod 600 /swapfile mkswap /swapfile 启用 Swap 文件 swapon /swapfile 持久配置 Swap 修改 /etc/fstab,添加 /swapfile none swap sw 0 0 以自动启用 Swap 文件。
Read more
July 19, 2024

OpenSSL command line tool to generate a self signed certificate.

创建 san.cnf 配置文件,用于定义证书的详细信息,包括国家、组织、域名等。 定义扩展属性,如 subjectAltName。 [ req ] default_bits = 256 default_md = sha256 default_keyfile = key.pem prompt = no encrypt_key = no distinguished_name = dn req_extensions = req_ext x509_extensions = v3_ca [ dn ] C=HK ST=Hong Kong L=Hong Kong O=Example Organization OU=IT Department [email protected] CN = example.hk [ req_ext ] subjectAltName = @alt_names [ v3_ca ] subjectAltName = @alt_names [ alt_names ] IP.1 = 192.168.1.1 DNS.1 = example.hk 生成 ECDSA 私钥: openssl ecparam -genkey -name prime256v1 -out ecdsa_private.key 生成证书签名请求 (CSR): openssl req -new -key ecdsa_private.key -out ecdsa.csr -config san.cnf 生成自签名证书: openssl x509 -req -in ecdsa.csr -signkey ecdsa_private.key -out ecdsa_certificate.crt -days 365 -extensions v3_ca -extfile san.cnf 自签名 ECDSA 证书和私钥就生成完成了
Read more
July 14, 2023

写给新手的 Crypto 入门&环境配置

同时发布于 https://hello-ctf.com/HC_envSet/Crypto/ / 前言 善于百度, 哪里不懂先去百度, 其实搜索引擎上更推荐 Bing 或是 谷歌, 百度只是要求搜索解决的统一说辞, 还有疑惑则去读 <提问的智慧>, 如果依旧不理解, 可以用从 <提问的智慧> 中学到的提问方式来请教别人.
Read more
July 2, 2023

PWNable.kr 肥肠适合初学者

col ssh 连上执行ls -la看看(-la参数可以浏览文件属性) cat col.c查看源文件 / #include <stdio.h> #include <string.h> unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i<5; i++){ res += ip[i]; } return res; } int main(int argc, char* argv[]){ if(argc<2){ printf("usage : %s [passcode]\n", argv[0]); return 0; } if(strlen(argv[1]) != 20){ printf("passcode length should be 20 bytes\n"); return 0; } if(hashcode == check_password( argv[1] )){ system("/bin/cat flag"); return 0; } else printf("wrong passcode.\n"); return 0; } 分析出需要执行 col 这个程序时传参, 而且参数需要20bytes长, 同时要求参数经过 check_password() 后等于 hashcode 变量
Read more
May 30, 2023

CSAPP

lab 拆弹 第一步的exp, 进 ida 一眼顶针发现是个字符串比对 from pwn import * import sys import argparse context.log_level = 'debug' path_to_elf = '/home/lov3/PWN/OS/bomb_XBan/bomb' elf = ELF(path_to_elf) libc = elf.libc ip = sys.argv[1] # sys.argv[0] 为当前文件名 if len(sys.argv[1]) < 5: port = 0 else: port = int(sys.argv[2]) if port == 0: p = process(path_to_elf) else: p = remote(ip, port) sla = lambda x,y : p.sendlineafter(x,y) sa = lambda x,y : p.sendafter(x,y) ru = lambda x : p.recvuntil(x) def g(arg=''): if port != 0: return gdb.attach(p, arg) raw_input() def choice(op): sla('choice: ', str(op)) def arena(op): choice(1) choice(str(op)) def buy(obj): choice(2) sla('want a', obj) def use(obj): choice(3) choice(1) ru('use?\n') sa(']', obj) def leak_heap(x, y, z): ret = (z ^ 0xBAAD)<<16 ret = (ret + y ^ 0xBAAD)<<16 ret += x ^ 0xBAAD return ret p.recvuntil('day!\n') # 传回 'Border relations with Canada have never been better.' p.sendline(b'Border relations with Canada have never been better.') p.recvuntil(b'next one?\n') p.interactive()
Read more
May 15, 2023

深渊大学 OS PA

一点点汇编知识 如何得知 char 开了多大 sub 是一个指令,用于执行减法操作。它的作用是将一个操作数的值减去另一个操作数,并将结果存储到指定的目的地。 / esp 是啥寄存器 栈指针寄存器 当前栈顶
Read more
February 27, 2023

证书链

证书链是一系列数字证书的集合,用于验证和建立信任关系。在公钥基础设施(PKI)中,证书链用于验证服务器证书的有效性和可信任性。 证书链由多个证书组成,每个证书都被签发者(颁发者)签名。链的顶部是服务器证书,也称为终端证书或服务器端证书。该证书包含了公钥和与之相关的信息,如域名、组织名称等。 证书链的底部是根证书,也称为根CA证书或根证书颁发机构(Root CA)。根证书是最高级别的信任锚点,它的公钥用于验证链中的其他证书。 中间证书也被包含在证书链中,它们是由根证书颁发机构签发的,并用于连接终端证书和根证书。中间证书的作用是构建信任链,确保终端证书的有效性。 验证证书链的过程是逐级验证每个证书的签名,直到达到根证书。如果每个证书的签名都有效,并且根证书是受信任的,那么整个证书链就被视为有效和可信任的。 通过验证证书链,客户端可以确保与服务器之间的通信是安全的,并且可以信任服务器的身份。这对于建立安全的网络连接和进行加密通信至关重要,尤其在涉及敏感信息的场景下,如在线银行、电子商务等。
Read more
February 14, 2023
#CS

操作系统:设计与实现 蒋炎岩

操作系统:设计与实现 蒋炎岩
Read more