day2_buuctf
一、rabbit
1、原理
没找到加密过程……
2、识别
与base64密文有点相似,但末尾没有=
3、题目
二、篱笆墙的影子
题目
这个提示给的……猜的,前面flag刚好间隔一个,就把它提取出来了,然后再把偶数位提取出来拼接即为得到的flag
三、RSA
1、原理
公钥密码算法,具体可分为:产生公私钥对、加密、解密
1)产生公私钥对
1.随机选择两个不等质数p和q
2.计算p和q的乘积n
3.计算n的欧拉函数(小于等于n的正整数中与n互质的数的个数),为(p-1)(q-1)
4.随机选择整数e,1<e<n的欧拉函数
5.ed = 1 (mod (p-1)(q-1))
6.公钥为(n,e),私钥为(n,d)
2)加密过程
c = m ^ e mod n
3)解密过程
m = c ^ d mod n
2、识别
和rsa相关题目,题目会给明显提示,考察的主要是知道n,e,求d之类的
3、题目
import gmpy2 import rsa p = 473398607161 q = 4511491 n = p * q e = 17 d = int(gmpy2.invert(e , (p-1) * (q-1))) print(d)
四、Alice与Bob(素数分解)
题目
素数分解网站:http://tools.jb51.net/jisuanqi/factor_calc
素数分解工具:yafu
五、rsarsa
题目
rsa_m.py:
import gmpy2 import rsa import binascii p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483 q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407 e = 65537 n = p * q d = int(gmpy2.invert(e , (p-1) * (q-1))) c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034 m = pow(c, d, n) print(m) m_hex = hex(m)[2:] print(m_hex) print("ascii:\n%s"%(binascii.a2b_hex(m_hex).decode("utf8"),))
六、大帝的密码武器
题目
大帝想到凯撒密码(替换密码)
对密文进行加密:
七、Windows系统密码1
1、原理
windows系统用户名和密码会保存在C:\Windows\System32\config位置下的sam文件中,至于500啥意思,500之后的哈希值啥意思不清楚,最后一位的哈希值对应的是该用户名的密码
2、识别
用户名:数字:哈希值:哈希值
3、题目
ctf那行最后一个哈希为ctf对应的密码,md5解密得到flag
八、信息化时代的步伐(中文电码)
1、原理
中文电码表采用了四位阿拉伯数字作代号,从0001到9999按四位数顺序排列,用四位数字表示最多一万个汉字、字母和符号。
2、识别
都是数字且提示和中文相关,数的长度为4的倍数
3、题目
一开始走入了误区,研究了很长时间的gbk编码,很好用的一个网站:http://www.mytju.com/classcode/tools/encode_gb2312.asp
该题目用到的编码方式是中文电码,http://code.mcdvisa.com/,使用该网站解码