De1CTF 2020 Writeup

# Crypto ## NLFSR 可以发现输出是1时,ao是1的概率有75%。可以枚举前19个ao,解方程得到a的初始值,再枚举c和d的初始值,可以得到b的若干状态,最后解方程得到b,再检验。 ```cpp #include typedef unsigned int uint; typedef long long ll; typedef unsigned long long ull; typedef double lf; typedef long double llf; typedef std::pair pii; #define xx fir...

PlaidCTF 2020 Writeup

# Crypto ## stegasaurus scratch Given a c file, which calls lua, and we need to finish two tasks. In the first one, we need to construct an injective map between 8 distinct numbers from 0 to 39999, and 7 distinct numbers with their permutation. Note that C(40000,8)/C(40000,7) is about 5000, wh...

Midnight Sun CTF 2020 Quals Writeup

# pwn ## admpanel Run `id;cat flag`. ## Pwny racing - pwn1 ret2csu. See https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/medium-rop-zh/ (English: https://ctf-wiki.github.io/ctf-wiki/pwn/linux/stackoverflow/medium-rop/ ) for more information. ```python from pwn import * from ...

Codegate CTF 2020 Preliminary Writeup

# Misc ## Verifier 一个用 ply.yacc 实现的语法分析器,要写一段代码 print 一个小于 0 的数。但是他会先进行预处理,并求出每个变量可能的最小值和最大值,当 print 的输入的最小可能值小于 0 时会退出。 在预处理 while 时,他只会尝试运行 3 次,那么一个在第 4 次或之后才被修改的值就不会被预处理考虑到。 ``` T=10;A=1;B=1;[T>1{T=T+-1;A==5?{B=-1}:{A=A};A==-1?{A=5}:{A=A};A==0?{A=-1}:{A=A};A==4?{A=0}:{A=A};A==3?{A=4}:{A=A...

HackTM CTF Quals 2020 Writeup

由于寒假比较闲,所以找点比赛打。由于需要上交 wp,所以是英文的。 # Crypto ## RSA is easy #1 Since $$N$$ is known, we can compute the encrypted value of each printable character. Then match them with the given encrypted flag, we can decrypt it. ```python e=65537 n=... s=[...(encrypted flag)] from gmpy2 impor...

让 frp 走代理的方法

在 linux 下,让程序走代理有一个简单的方法,即 proxychains。但是他是 hack libc 实现的,于是对于 frp 这种 go 程序无效。 一个简单的方法是,用一个使用 libc 的能端口转发的程序中转一下,比如: ```bash proxychains4 socat TCP4-LISTEN:1234,reuseaddr,fork TCP4:xx.xx.xx.xx:1234 ``` 然后再让 frp 连本地端口就好了。

CTFZone 2019 Quals Writeup

# PPC ### Fridge In the $$n\times n$$ matrix, each $$(i,j)$$ operation will add a matrix to the original one, and modulo each entry with some $$P$$. (For the first several levels, $$P=2$$, and $$P=8$$ or $$16$$ later) We can compute a basis to solve this problem. ```python import socket imp...

一次(可能算是)失败的 BGP 尝试

### 背景 教育网的 ipv6 大多是免流的。那么问题是如何找一个合适的梯子实现高速免流。教育网 ipv6 的出国线路大概有 HE、Cogentco、HKIX(有多个 ISP 都会经过 HKIX,就不详细列出了)。 HE 是大多数 ip 都会走线路,于是他 QoS 也比较严重。Cogentco 和 HKIX 则 QoS 的比较少。走 HKIX 的 VPS 还是有不少(自行搜索),不过价格一般还是不便宜。 而 Cogentco 线路有一些大服务商有,比如 vultr 的达拉斯回程和亚特兰大的去程,但是这两个的相反方向却都只是普通的HE 线路。要综合这两个线路得到一个双向 Cogen...

CSP-S 2019 参赛记

这次 ~~NOIP~~ CSP,借着教育部打压竞赛的~~良机~~,我得以有幸在退役后作为社会人士参加。 ### 初赛 系统崩了半小时,比较毒瘤。 ### Day 0 人工智能入土的 midterm survey 的 ddl 在临近截止时终于水完了。 ### Day 1 傻逼监考,不让带水、食物、卫生纸。开始时低估了难度(高估了自己的水平),不慌不忙的打板子。然后瞬间过 T1。然后很快过 T2。T3 一开始想偏了若干方向。最后到离结束 2 min 时才过大样例,于是三道题都没对拍。 后来发现 T3 没判 $$n=1$$。 预计得分 200~300。 ...

把 0~2^n-1 划分为若干组使得每组异或和为 0

把 $$0$$~$$2^n-1$$ $$(n\ge 2)$$ 划分为若干组使得每组异或和为 0,最多分出多少组? 显然组数的上界是 $$\lceil\frac{n}{3}\rceil$$。 可以递归构造: ```python def gen(n): if n==2: return [(0,),(1,2,3)] if n==3: return [(0,),(1,2,3),(4,5,6,7)] s=gen(n-2) res=[(0,),(1,2,3)] for i in s: if len(i)==3: key=[0,2,3,1] ...