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] ...

HITCON CTF 2019 Quals Writeup

# Misc ### EmojiiVM It's too long to directly print each character, but we can push 1,1,1,2,...,9,9 into the stack, and write a simple loop to print the table. Unfortunately my blog doesn't support emojis, so here's no solution. ### heXDump Xxd only overwrites the first bytes of the file, ...

OI回忆录

### 前言 ~~9月15日凌晨2:03,离ddl还有不到22小时,我看着只字未动的线代作业(还有其他若干ddl),打开了word写情系母校……~~ 本文是因为情系母校的ddl才写的 ###正文 一开始接触到oi是初中时,那是我已经会了一些基础的编程(VB,因为我一开始想造窗口程序,然后就没有动力去学别的语言了……),而在信息技术课上听到老师讲到有这么个竞赛,我就来了兴趣,去学校开设的竞赛班上学习。当时发了一本蓝书和一本黄书,然后蓝书上的基础内容(好像)我很快就学会了,但是黄书上一个基础dp我在接下来几个月或是1~2年的时间内都没有搞懂。在初二时我用这半吊子水平去参加了noip普...

一个有趣的问题的(部分)证明

http://ljt12138.blog.uoj.ac/blog/5059 对于第二个问题,当 $$n\ge 8$$ 时,可以如下构造: 对于 $$1$$ 的个数为偶数和奇数的两种数,按 $$1$$ 的个数从小到大,其次大小从大到小排序。$$p$$ 个人在偶数堆中从前向后选,$$q$$ 个人在奇数堆中从后向前选。 显然只需要验证 $$p+q=\lfloor\frac{2^n}{3}\rfloor$$ 且 $$\max(p,q)\le 2^{n-2}$$ 的正确性。 用程序可以容易的证明 $$n$$ 较小情况的正确性([https://paste.ubuntu.co...