XYCTF2024 Writeup
Writeup
Additional Statement:
Cooperated with f4k3r.
X1ct34m 2024 Misc 招新题 CrazyC2
本来在CTF中应该都是基操,但是因为本人太菜,弄了好几天才出。。。(T0T)
题目
image-20240402165312088
先是流量分析,看到了很多TCP和HTTP流,追踪大概看一下
image-20240402164740735
看起来传输了很多加密的信息,先把它们全都手动整理出来
image-20240402164916818
直接解base64解不出,但是POST传参时看到了一个random_key,猜是异或用的,果然
image-20240402165223751
看到用curl从攻击机读取了一个文件,我也试着读了一下,发现可以从攻击机中读到任意文件,于是读到了第一个flag
image-20240402165620146
从读一些不存在的文件产生的报错中可以看到python
flask源码,读下来进行审计
image-20240402165819762
1234567891011121314151617181920212223242526272829303132 ...
X1ct34m 2024 Misc 招新题 Wrong Direction!
这次不用volatility2了,试试volatility3
filescan一下,在桌面上看到个叫成绩单的表格
image-20240328132138952
把它dump下来
image-20240328132551305
在这张表格的第275行发现了一串powershell命令
image-20240328194801457
那么就去查看一下powershell的evtx日志文件。powershell的日志文件主要有PowerShell.evtx,Powershell
Operational.evtx,Powershell Admin.evtx三种,这里在Powershell
Operational.evtx中可以找到执行的命令记录
image-20240328200431086
image-20240328195639155
image-20240328195922747
可以看到有两串Scriptblock文本,把它们合起来
image-2024032820011833 ...
NKCTF2024 Writeup
Writeup
DES加密原理
参考了这篇文章
简述
DES(Data Encryption
Standard)是一种对称加密算法,它将64位的明文分成64位的块,并使用64位的密钥来进行加密操作。虽然DES本身只能处理64位的数据块,但是可以通过分组密码模式(如ECB、CBC、CFB、OFB、CTR等)来加密更长的数据。
初始置换
输入明文M(64位),根据下表进行初始置换,得到IP
1234567858,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,
如将M的第58位填入IP的第一位。
然后将IP平分为两段,L0和R0
生成子密钥
一图以概之
首先,一开始输入的64位key按照下表进行转换,生成56位密钥(置换选择1)
123456757,49,41,33,25,17,9,1 ...
HSCCTF2024 Writeup
Writeup
密码学算法散记
在这里零散地记载一些密码学可能用到的算法(当裁缝)
RSA中的e,phi不互素问题
参考了这篇文章
换模
当e和p-1或q-1互素时,可以转换到模p或模q下求解
假设e与p-1互素 \[
m^e\equiv c(mod\ n)
\]
\[
m^e=c+kpq
\]
\[
m^e\ mod\ p=c\ mod\ p+kpq\ mod\ p
\]
\[
m^e\equiv c(mod\ p)
\]
python实现:
1234567891011import gmpy2e=p=q=n=c=assert gmpy2.gcd(e,p-1)==1c=c%pphi=p-1d=gmpy2.invert(e,phi)m=pow(c,d,p)
e//gcd iroot(m,2)
当gcd(e,phi)较小时,可以先将e//gcd(e,phi),使得e和phi互素后,再对算出的m开根
python实现:
1234567891011import gmpy2e=p=q=n=c=phi=(p-1)*(q-1)_gcd=gmpy2.gcd(e,phi)e=e//_ ...
密码学基础散记
在这里零散地记载一些遇到的密码学相关知识(当裁缝)
威尔逊定理
任一素数减去1的阶乘与-1模该素数同余。即对于任何素数p,都有 \[
(p-1)!+1\equiv 0(mod\ p)
\]
引理
设p是素数,f(x)是整系数多项式,再设a1,a2,...,an两两对模不同余,满足
\[
f(a_j)\equiv 0(mod\ p),1\leq j\leq n
\] 则存在整系数多项式q(x),使得 \[
f(x)\equiv q(x)(x-a_1)(x-a_2)...(x-a_n)(mod\ p)
\] 由此可进一步推知, \[
x^{p-1}-1\equiv (x-1)...(x-p+1)(mod\ p)
\]
群论
参考了百度百科和这篇文章
二元运算
image-20240306205145595
定义
image-20240306205505241
循环群
image-20240306210708812
阿贝尔群
若一个群满足交换律,则称其为阿贝尔群,也称为交换群。
同态
设(M,)和( ...
qsnCTF2024 Round1 Writeup
Writeup
Additional Statement:
"小光的答案之书" in "Misc" was written by f4k3r
《初等数论》学习笔记
从今天开始,不间断地更新一些《初等数论》学习笔记,简单打一下密码学的基础(为了密码学不爆零T0T)
第一章 整数的整除性
gcd(a,b)=gcd(b,r)
假设a和b都是整数,且a>b
a=bq+r, 0<r<b
其中q和r都是正整数,则a和b的最大公因数等于b和r的最大公因数,即
gcd(a,b) = gcd(b,r)
欧几里得算法(辗转相除法)
利用上述性质,我们可以用欧几里得算法来求两个较大数的最大公因数。用语言通俗地表达,就是先用较大数除以较小数,然后用上一个式子的除数除以上一个式子的余数,如此反复至余数为0,最后一个式子的除数即为最大公因数。
百度百科中的这张图较好地解释了其中原理:
下面是一个简单的python函数实现:
1234def gcd(a, b): while a != 0: a, b = b % a, a return b
扩展欧几里得算法
看书上都没有讲,但是也很重要,这里补充一下。
这个算法在用辗转相除法找到gcd(a,b)的前提下,还能找到x,y,使得ax+by=gcd( ...