CTF
CryptoCTF解题记录
2023Blue Office12345678910111213141516171819202122232425262728293031323334353637383940#!/usr/bin/enc python3import binasciifrom secret import seed, flagdef gen_seed(s): i, j, k = 0, len(s), 0 while i < j: k = k + ord(s[i]) i += 1 i = 0 while i < j: if (i % 2) != 0: k = k - (ord(s[i]) * (j - i + 1)) else: k = k + (ord(s[i]) * (j - i + 1)) k = k % 2147483647 i += 1 k = (k * j) % 2147483647 return kdef reseed(s): return s * 214013 + 2531011def encrypt(s, msg): assert s ...
数学
牛顿恒等式
牛顿恒等式牛顿恒等式Newton’s Identities - 知乎 (zhihu.com)
牛顿恒等式(Newton’s Identities)研究多项式方程值和系数之间的关系:
如果$x_1,x_2,…,x_n$是$n$次多项式方程的$n$个根,定义:
P_k=\sum^{n}_{i=1}x^k_i=x_1^k+x_2^k+...+x^k_n一元二次牛顿恒等式对于一元二次多项式:
f(x)=ax^2+bx+c两个零点为$\alpha_1,\alpha_2$,定义:
P_i=\sum^2_{k=1}\alpha^i_k=a^i_1+a^i_2对于$i\geq2$,定义$A=-\frac ba,B=\frac ca$,满足:
\begin{cases}P_1=A\\
P_2=AP_1-2B\\
\cdots\\
P_i=AP_{i-1}-BP_{i-2}
\end{cases}
可以用韦达定理证明。
例如,计算$P(x)=x^2-2x+6$的两个根为$a,b$时的$a^{10}+b^{10}$:
A=-\frac ba=2,B=\frac ca=6
P_1=2,P_2=-8 ...
Crypto
ECC中的常见曲线
根据对ECC的学习知道,我们常用的都是根据Weierstrass方程简化形式的曲线,实际上还存在其他形式的椭圆曲线。
参考:曲线 | Lazzaro (lazzzaro.github.io)
蒙哥马利曲线蒙哥马利曲线(Montgomery Curves):
By^2=x^3+Ax^2+x系数满足$B(A^2-4)\not =0$。
加法:
P_1(x_1,y_1)+P_2(x_2.y_2)=P(x_3,y_3)
x_3=\frac{B(y_2-y_1)^2}{(x_2-x_1)^2}-A-x_1-x_2=\frac{B(x_2y_1-x_1y_2)^2}{x_1x_2(x_2-x_1)^2}
y_3=\frac{(2x_1+x_2+A)(y_2-y_1)}{x_2-x_1}-\frac{B(y_2-y_1)^3}{(x_2-x_1)^3}-y_1蒙哥马利曲线用来构造密码算法的实例是Curve25519。
映射到维尔斯特拉斯曲线:
By^2=x^3+Ax^2+x \longmapsto v^2=u^3+au+b
(u,v)=\Big(\cfrac{x}{B}+\cfrac{A}{3 ...
杂谈
web3学习笔记--Solidity
去年抽了一段时间简单了解了一下区块链的一些机制,并完成了几个CTF题目,感觉还比较有趣,想抽空继续学一学。
什么是Web3?总体来说,Web在互联网上分为几个不同的阶段,有Web1、Web2、Web3。
Web1作为第一个阶段,主要以静态网页为主,我们用户可以查看浏览网页内容,缺乏交互性, 类似于一张报纸,只能读。
Web2是第二个阶段,出现了更多的互动和社交性,出现了更强的个性化服务以及丰富的媒体形式,以及很多新的网络应用(脸书,推特,油管等等)。
Web2的一个特点是中心化,简单来说是由少数人作为控制者掌控着大部分数据和算法。
例如某游戏公司会把游戏服务器放在公司,所有玩家使用服务器上的内容,每次对服务器进行更新时,用户需要被迫使用服务器的最新内容,这是中心化。
Web3是第三个阶段,体现在去中心化、智能合约、加密货币等。Web3的目标是建立一个去中心化网络,用户对自己的数据和信息有更多的控制权,并且能够直接进行数字交易和互动。
Solidity入门Solidity是编写以太坊虚拟机(EVM)智能合约的语言。专门用于以太坊智能合约的开发。可以用来创建安全和可靠的智能合约应用程序 ...
Crypto数学
密码学的数学基础(五)
有限域有限域是元素个数(阶)有限的域。
特征:对于$\forall a\in R$满足$ma=\theta$的最小正整数$m$是特征($Char\ R=m$),有限域的特征为素数。
对于所有的元素探讨特征比较麻烦,通常使用单位元去寻找特征,如果单位元满足特征,其他元素也能满足。
素域:不包含任何真子域的域。
通常,素数的符号为$p$,有限域的符号为$F$。
定理:阶为素数的有限域一定是素域,特征值就是这个素数,例如域$Z_p$。
定理:任何有限域都包含一个同构于$Z_p$的子域。
引理:$K$是$F$的子域,$|K|=q$,$[F:K]=n$,那么$|F|=q^n$。
定理:$F$的特征是$p$,$K$是$F$的素子域,$[F:K]=n$,那么根据引理得到:$|F|=p^n$。
根据这个定理,可以知道,任意一个有限域,它的阶一定有$p^n$的形式。这里的$p$是有限域的特征,也是包含的素子域的特征和元素个数,$n$是$F$在素子域上的扩张维度。
例如:一个有限域,不可能包含$6$个元素,因为$6$不是$p^n$的形式。
有限域的唯一性提供任意素数$p$和任意正整数$n$,一定存在 ...
Crypto
New Attacks on Prime Power $N=p^rq$ Using Good Approximation of $φ(N)$
一篇学长发的paper,简单复现一下
这篇论文总共介绍了三种RSA攻击方法。
攻击一素数幂模:形式为$N=p^rq$,和RSA一样,安全性取决于整数分解的难度。
设$N=p^rq$是素数幂模,满足$q<p<2q$,有$ed-k\phi(N)=1$和$1<e<\phi(N)<N-2N^{\frac r{r+1}}+N^{\frac{r-1}{r+1}}$,我们定义$d=N^{\delta}$,如果有$\delta<\frac{1-\gamma}2$,满足:
|\frac e{N-2N^{\frac r{r+1}}+N^{\frac{r-1}{r+1}}}-\frac kd|<\frac 1{2d^2}
这里的$\gamma\in (0.75,0.8)$。
根据之前了解过的legendre定理,那么对于$\frac kd$就在连分数$\frac e{N-2N^{\frac r{r+1}}+N^{\frac{r-1}{r+1}}}$展开的范围内。
知道了$d$之后,就可以把素数幂模在多项式时间内因式分解。
由于:
\begin{cases}\phi(N)=p^{ ...
CTF
近期比赛复现Vol.3
西湖论剑2024Or1cle题目没有提供附件,提供了nc,先链接靶机,显示如下信息:
12345678910111213 _ __ __________ ___________ | |/_/__ ___ ___ __ __ __ /\____;;___\ | | _> </ -_) _ \/ _ \/ // / /o \________ | / haruki / | flag |/_/|_|\__/_//_/_//_/\_, / \_/ | | .', ----. /| |——————————— /___/ || |||| | \'.____.& ...
网站开发
git使用ssh连接报错的解决方案
这两天更新博客一直失败,很久没发生过这种情况了。
找了很多有相同问题的文章,大多都还是通过重新生成ssh密钥重新和github绑定这样子,试了几次也不成功。
找到一篇不一样的文章,终于解决了这次问题:ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repo-CSDN博客
特此感谢这位大佬!
具体的操作如下:
报错原因:
12345678ssh: connect to host github.com port 22: Connection timed outfatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.FATAL Something's wrong. Maybe you can find the solution here: https:// ...
Crypto数学
密码学的数学基础(三)
本篇主要介绍密码学中关于抽象代数有关群论的内容
代数结构设$G$为非空集合,后跟一个二元运算。
二元运算需要两个运算数,比如加减乘除需要两个运算数,它们就是二元运算。
(G,*)把一个集合和指定的一个或者多个运算组合到一起所形成的结构,如果满足封闭性,就能成为一个代数结构。
什么是封闭性?
我们对于$\forall a,b\in G$,对其进行运算,所得结果跑不出这个集合,仍然为集合里的元素,即为:
$a*b\in G$
比如$(Z,\div)$就不是一个代数结构,因为整数相除可能不为整数,不满足封闭性,而且0不能作为除数,运算不能适用于所有元素。
群论群(group)定义$(G,*)$为一个群,那么它满足以下四条性质:
①封闭性:$\forall a,b\in G,a*b\in G$
②结合律:$\forall a,b,c\in G,a*b*c=(a*b)*c$,揭示了元素运算顺序不影响最终结果。
③有单位元(幺元):$\exists e\in G,\forall a\in G,a*e=e*a=a$,群里的单位元为唯一的。例如加法里的0,乘法里的1。
如果$e$只能位于运 ...
Crypto数学
密码学的数学基础(四)
在这一篇中继续探讨抽象代数有关环和域的内容。
环论定义:$(R,+,\cdot)$是一个环,满足以下条件:
这里的加法和乘法是抽象概念,不是真正意义上的加法和乘法,例如说这里的乘法不一定满足交换律。
1.$(R,+)$构成阿贝尔群。
2.$(R,\cdot)$构成半群。
注意到整数和乘法不能构成群,因为除了1和-1外的其他整数都没有逆元,但是满足结合律和封闭性,我们称之为半群,为乘法半群。
如果一个代数结构只满足封闭性,那么这种结构叫广群。半群在广群的基础上还有结合律的特性。如果还含有单位元,这种结构叫幺半群。群还含有逆元,如果还满足交换律就叫做阿贝尔群,含有生成元的群就叫循环群,几个概念属于层层包含关系。
3.满足分配律:
\forall a,b,c\in R,a\cdot(b+c)=a\cdot b+a\cdot c
(b+c)\cdot a=b\cdot a+ c\cdot a
整数环:$(Z,+,×)$,有理数环:$(Q,+,×)$,实数环:$(R,+,×)$
$(Z_n,+,×)$也是环,其中分配律在模运算下也满足。
环可以轻松表示多项式。
根据集合的元素是有限的 ...