SICTF_round3-2024
https://yuanshen.life/games/3/challenges
队伍wp,难题不会做,简单题也不全会。
web:@Xuancrane
misc:@ctfer
Crypto:@baimi
Misc
[签到]签到回复公众号,略
GeekChallenge爆破咯
from pwn import *from string import *table = string.ascii_letters + string.digits + string.punctuation + " "print(table)line=''list=''io = remote('yuanshen.life',34725)for i in range(12): io.recvline()for i in range(114): if (len(list)==5): table=list for a in table: text='0'*i+a+'0'*(113-i) # print(text) io.sendline(t ...
beginCTF2024
*为赛后复现
虽然但是,我还是厚着脸皮报了个新生赛道😊😢,不过(就不去自由赛道丢人了)
MISCreal check in真签到,base64即可
tupper附件给了好多txt文件,而且文件名也给了顺序,直接合并文件,得到
MTQyNzgxOTM0MzI3MjgwMjYwNDkyOTg1NzQ1NzU1NTc1MzQzMjEwNjIzNDkzNTI1NDM1NjI2NTY3NjY0Njk3MDQwOTI4NzQ2ODgzNTQ2NzkzNzEyMTI0NDQzODIyOTg4MjEzNDIwOTM0NTAzOTg5MDcwOTY5NzYwMDI0NTg4MDc1OTg1MzU3MzUxNzIxMjY2NTc1MDQxMzExNzE2ODQ5MDcxNzMwODY2NTk1MDUxNDM5MjAzMDAwODU4MDg4MDk2NDcyNTY3OTAzODQzNzg1NTM3ODAyODI4OTQyMzk3NTE4OTg2MjAwNDExNDMzODMzMTcwNjQ3MjcxMzY5MDM2MzQ3NzA5MzYzOTg1MTg1NDc5MDA1MTI1NDg0MTk0ODYz ...
N1CTF_Junior_2024
emm,这个比赛是Nu1L Team,所以我不会做很正常,😢对,没错,是这样的
好吧,我确实很菜
Junior RSA
My p and q are generated by an unbreakable algorithm!
task.py
from Crypto.Util.number import *from secret import flagm = bytes_to_long(flag)def gen(bits): while True: a = getPrime(bits) b = getPrime(bits) c = getPrime(bits) p = (a << (2*bits)) + (b << bits) + c q = (c << (2*bits)) + (a << bits) + b if isPrime(p) and isPrime(q): break n = p * q e = 65 ...
RSA的AMM算法
之前在RSA题目中遇到过的和phi不互素的问题,可以采用AMM开根算法来解决这个问题,来了解有限域上的AMM开根算法。
放一篇论文压一压:1111.4877.pdf (arxiv.org)
费马小定理若$p$为素数,$gcd(a,p)=1$,则$a^{p-1}\equiv 1\;(mod\;p)$。
另一个形式:对于任意整数$a$,有$a^p\equiv a\;(mod\;p)$。
二次剩余(Quadraticresidue)通俗来说,二次剩余可以认为是在取模意义下的开平方,即满足方程$x^2\equiv a(mod\;p)$的$x$的值。
一个数$a$,如果不是$p$的倍数,且模$p$同余于某个数的平方,则称$a$为模$p$的二次剩余。
一个数$b$,如果不是$p$的倍数,且模$p$不同余于任何数的平方,则称$b$为模$p$的二次非剩余。
一个数$c$,是$p$的倍数,那么容易得到$c\equiv 0(mod\;p)$,显然这个方程$x^2 \equiv c$的解仅有$x = 0$了。
一般这种问题只讨论$p$为奇数的情况
欧拉准则
(\frac {a}{p}) \equiv a ...
2023春秋杯冬季赛
只解出一个题,签到。。。。赛后复现,学习新知识。
收到,义父(bushi
ECC学了好久,拖了好久。。。我真该死啊
CF is Crypto Faker学过AI的都知道,这题不是“纯密码”,密码假面人要披上AI的战衣,但他永远不会卸下密码的假面。https://pan.baidu.com/s/1nOe2NlWdCVfES6I1U5RzPg提取码:GAME
附件给了一大堆,有用的没几句.(老奶奶的裹脚布)
Please firstly pay attention to the file named as "task.py".The real flag is a little strange.However, there is no need to be messy in your mind just because of the "appearance" of the flag.Just be self-confident!
from Crypto.Util.number import *import initializeimport trainimport validimport t ...
RSA的共模攻击
简述RSA工作原理
要加密的信息为m,加密后的信息为c
模n,计算出两个质数p和q,p和q计算欧拉函数值φ(n)
欧拉函数值φ(n),$φ(n)=(p-1)(q-1)$
公钥参数e和私钥参数d,可由欧拉函数值计算出,$ed≡1 (mod φ(n))$
加密:$m^e ≡ c (mod n)$
解密:$c^d ≡ m (mod n)$
算法基础裴蜀定理因为翻译版本的不同,这个定理可能还会被叫做贝祖定理等。
裴蜀定理是这样被描述的:
\forall a,b\in Z,\exists (x,y)\in Z满足
ax+by=gcd(a,b)文字描述:对于任意整数a,b,都存在一对整数x,y,使得$ax+by=gcd(a,b)$成立
证明:
用欧几里得算法求解这个函数的过程:
int gcd(int a,int b){ return b?gcd(b,a%b):a;}
显然是一个递归求解的函数,在递归到最后时,$b=0$,不管$a$等于多少,这是必定有一组整数$x=1,y=0$使得:
a*1+0*0=gcd(a,0)0和任何数的最大公约数都等于原数
那么通过这个递归的过程进行回溯。当 ...
Webshell的流量特征及解密
写在前面:
各位师傅们好,小白刚刚接触这一部分内容,许多地方还是一知半解,写下这篇文章也是为了以后深入学习有个参考。在您阅读的过程中,如果有发现我的错误,希望师傅们可以指出!
baimi拜谢师傅们!**
一句话木马在很多的渗透过程中,渗透人员会上传一句话木马(简称Webshell)到目前web服务目录继而提权获取系统权限,不论asp、php、jsp、aspx都是如此,那么一句话木马到底是什么呢?
先来看看最简单的一句话木马:
<?php @eval($_POST['attack']);?>
【基本原理】利用文件上传漏洞,往目标网站中上传一句话木马,然后你就可以在本地通过中国菜刀chopper.exe即可获取和控制整个网站目录。@表示后面即使执行错误,也不报错。eval()函数表示括号内的语句字符串什么的全都当做代码执行。$_POST[‘attack’]表示从页面中获得attack这个参数值。
入侵条件其中,只要攻击者满足三个条件,就能实现成功入侵:
(1)木马上传成功,未被杀;(2)知道木马的路径在哪;(3)上传的木马能正常运行。
常见形式常见的一句话木马:
php的一 ...
NSSRound#16_Crypto
pr提示:CRT
from Crypto.Util.number import *import randomflag=plaintext = 'NSSCTF{****************}'charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'padding_length = 100 - len(plaintext)for _ in range(padding_length): plaintext += random.choice(charset)public_exponent = 31413537523message = bytes_to_long(plaintext.encode())assert message > (1 << 512)assert message < (1 << 1024)prime_p = getPrime(512)prime_q = getPrime(512)prime_r = getPrime(512)n1 = pr ...
CRYPTOHACK--RSA
CryptoHack – RSA challenges
RSA, first described in 1977, is the most famous public-key cryptosystem. It has two main use-cases: Public key encryption enables a user, Alice, to distribute a public key and others can use that public key to encrypt messages to her. Alice can then use her private key to decrypt the messages.Digital signatures enable Alice to use her private key to "sign" a message. Anyone can use Alice's public key to verify that the signature was created with her corresponding pri ...
PolarD&N—Crypto困难
分段解密[[3202805436L, 509716930L], [3140667873L, 1667141091L], [3173275598L, 2248305098L], [709283154L, 3416762332L]]
import sysdef abc(First): First = c_uint32(First) # 无符号数! return Firstdef enflag(i, j): a = 32 tt = 0x9e3779b9 b = [0,0] First = abc(i[0]) Second = abc(i[1]) add = abc(0) add=add.value while(a>0): add += tt First.value += ( Second.value << 4 ) + j[0] ^ Second.value + add ^ ( Second.value >> 5 ) + j[1] Second.value ...
PolarD&N—Crypto中等
二进制下载附件,是一个拨号音,dtmf2num,执行得到:
1*0000*00*000*001101*00*000*001101*11*111*010*000*0
题目说的二进制根本无法解决问题,试试摩斯密码,1为长,0为短,*为间隔符
输出“T H I S _ I S _ M O R S E”
flag{T H I S _ I S _ M O R S E},flag并不是这个,试试32小写的MD5
flag{5cb1d685cef76505e56ee5d49f33ba32}
FB题目是图片和“VERAYTRGUYTLOUYTFDRKONMLKJOPGF65DD”
图片是斐波那契数列螺旋线,想到斐波那契数列{“1,1,2,3,5,8,13,21,34,55,89…….”}
dic = b'VERAYTRGUYTLOUYTFDRKONMLKJOPGF65DD'dic_list = list(dic)Fibonacci = [1,1,2,3,5,8,13,21,34]str = ""for i in Fibonacci: print(chr(dic_list[i-1])) ...
PolarD&N—Crypto简单
keyboard2.021 31 4153 63 7362 72 8281 91 0151 61 71解出来的内容转换为md5值后加上flag{}
题目说是键盘密码,个位数只有1 2 3,十位数有2-0
手动解密,得到:
w e r b n m h j k i o p t y u
观察发现,中间的字符是enjoy,将”enjoy”转换为MD5(小写32位)
flag{76e369257240ded4b1c059cf20e8d9a4}
一闪一闪亮星星
提取图片中的文字
c = 1433 45 2222 821 1616 41 140 821 1 2475 205 1616 959 140 41 140 959n = 2537d = 937e = 13
n,d,e都很小,除去空格,一长串c不大可能,试试把所有的小c求m。尝试后发现得到的数字在0-26之间,尝试字母表
exp:
from Crypto.Util.number import *import gmpy2import hashliba = "abcdefghijklmnopqrstuvwxyz"c = "1433 45 ...