精华内容
下载资源
问答
  • 攻防世界crypto新手练习区通关教程

    千次阅读 2020-05-18 10:03:57
    base64 下载附件后去解密base64即可 cyberpeace{Welcome_to_new_World!} Caesar 下载附件后去解密,是凯撒密码 位移12即可 Morse 这是一串摩斯密码,拿去解密即可 ...r="/119/101/10

    base64

    下载附件后去解密base64即可

    cyberpeace{Welcome_to_new_World!}

    Caesar

    下载附件后去解密,是凯撒密码

    位移12即可

    Morse

    这是一串摩斯密码,拿去解密即可

    cyberpeace{morsecodeissointeresting}

    混合编码

    首先base64解密

    然后进行unicode编码转换

    接着再进行一次base64解密

    最后在ascii解密

    import re
    r="/119/101/108/99/111/109/101/116/111/97/116/116/97/99/107/97/110/100/100/101/102/101/110/99/101/119/111/114/108/100"
    r=re.split("/",r)
    flag=""
    for i in range(1,len(r)):
       flag=flag+chr(int(r[i]))
    print flag

    加上格式Cyberpeace{welcometoattackanddefenceworld}

    幂数加密

    运行脚本进行解密即可

    a=["88421","0122","048","02244","04","0142242","0248","0122"] 
    flag="" for j in range(0,len(a)): 
        str = a[j] 
        list=[] 
        sum=0 
        for i in str: 
            list.append(i) 
            length = len(list) 
        for i in range(0,length): 
            sum+=int(list[i]) 
        flag+=chr(64+sum) print flag
    

    cyberpeace{WELLDONE}

    Railfence

    这是栅栏密码,栏数为5

    cyberpeace{railfence_cipher_gogogo}

    easy_RSA

    运行python即可

    def Exgcd(a, b):
        # ax+by=1,gcd(a,b)
        if b == 0:
            return (1, 0, a)
        (x, y, r) = Exgcd(b, a%b)
        temp = x
        x = y
        y = temp-a/b*y
        return (x, y, r)
    def inv(a, n):
        # ax = 1 mod n
        (x, y, r) =Exgcd(a, n)
        if x<0:
            return x+n
        else:
            return x
    p = 473398607161
    q = 4511491
    e = 17
    N = p*q
    phi_N = (p-1) * (q-1)
    d = inv(e, phi_N)
    print(d)

    不仅仅是Morse

    首先摩斯密码解密然后把HHH后面的拿去培根解密即可

    然后就是把小写的字符串就是flag了

    cyberpeace{attackanddefenceworldisinteresting}

    Easychallenge

    需要先把python的pyc文件进行反编译

    之后运行代码即可

    import base64
    s="UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==="
    s=base64.b32decode(s)
    m = ''
    for i in s:
       x = ord(i) ^ 36
       x = x - 36
       m+= chr(x)
    h = ''
    for i in m:
       x = ord(i) - 25
       x = x ^ 36
       h+= chr(x)
    print h

    Normal_RSA

    PCTF{256b_i5_m3dium}

    转轮机加密

    import re
    sss = '1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 11 < MNBVCXZQWERTPOIUYALSKDJFHG < 12 < LVNCMXZPQOWEIURYTASBKJDFHG < 13 < JZQAWSXCDERFVBGTYHNUMKILOP <'
    m = 'NFQKSEVOQOFNP'
    # 将sss转化为列表形式
    content=re.findall(r'< (.*?) <',sss,re.S)
    # re.S:DOTALL,此模式下,"."的匹配不受限制,可匹配任何字符,包括换行符
    iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
    print(content)
    vvv=[]
    for i in range(13):
        index=content[iv[i]-1].index(m[i])
        vvv.append(index)
    print(vvv)
    
    for i in range(0,26):
        flag=""
        for j in range(13):
            flag += content[iv[j]-1][(vvv[j]+i)%26]
        print(flag.lower())

    Fire开头的就是了,直接提交即可

    easy_ECC

    运行代码,然后把公匙的十六进制转换成十进制再相加即可

    import collections
    import random
    
    EllipticCurve = collections.namedtuple('EllipticCurve', 'name p a b g n h')
    
    curve = EllipticCurve(
       'secp256k1',
       # Field characteristic.
       p=int(input('p=')),
       # Curve coefficients.
       a=int(input('a=')),
       b=int(input('b=')),
       # Base point.
       g=(int(input('Gx=')),
          int(input('Gy='))),
       # Subgroup order.
       n=int(input('k=')),
       # Subgroup cofactor.
       h=1,
    )
    
    
    # Modular arithmetic ##########################################################
    
    def inverse_mod(k, p):
       """Returns the inverse of k modulo p.
    
      This function returns the only integer x such that (x * k) % p == 1.
    
      k must be non-zero and p must be a prime.
      """
       if k == 0:
           raise ZeroDivisionError('division by zero')
    
       if k < 0:
           # k ** -1 = p - (-k) ** -1 (mod p)
           return p - inverse_mod(-k, p)
    
       # Extended Euclidean algorithm.
       s, old_s = 0, 1
       t, old_t = 1, 0
       r, old_r = p, k
    
       while r != 0:
           quotient = old_r // r
           old_r, r = r, old_r - quotient * r
           old_s, s = s, old_s - quotient * s
           old_t, t = t, old_t - quotient * t
    
       gcd, x, y = old_r, old_s, old_t
    
       assert gcd == 1
       assert (k * x) % p == 1
    
       return x % p
    
    
    # Functions that work on curve points #########################################
    
    def is_on_curve(point):
       """Returns True if the given point lies on the elliptic curve."""
       if point is None:
           # None represents the point at infinity.
           return True
    
       x, y = point
    
       return (y * y - x * x * x - curve.a * x - curve.b) % curve.p == 0
    
    
    def point_neg(point):
       """Returns -point."""
       assert is_on_curve(point)
    
       if point is None:
           # -0 = 0
           return None
    
       x, y = point
       result = (x, -y % curve.p)
    
       assert is_on_curve(result)
    
       return result
    
    
    def point_add(point1, point2):
       """Returns the result of point1 + point2 according to the group law."""
       assert is_on_curve(point1)
       assert is_on_curve(point2)
    
       if point1 is None:
           # 0 + point2 = point2
           return point2
       if point2 is None:
           # point1 + 0 = point1
           return point1
    
       x1, y1 = point1
       x2, y2 = point2
    
       if x1 == x2 and y1 != y2:
           # point1 + (-point1) = 0
           return None
    
       if x1 == x2:
           # This is the case point1 == point2.
           m = (3 * x1 * x1 + curve.a) * inverse_mod(2 * y1, curve.p)
       else:
           # This is the case point1 != point2.
           m = (y1 - y2) * inverse_mod(x1 - x2, curve.p)
    
       x3 = m * m - x1 - x2
       y3 = y1 + m * (x3 - x1)
       result = (x3 % curve.p,
                 -y3 % curve.p)
    
       assert is_on_curve(result)
    
       return result
    
    
    def scalar_mult(k, point):
       """Returns k * point computed using the double and point_add algorithm."""
       assert is_on_curve(point)
    
    
    
       if k < 0:
           # k * point = -k * (-point)
           return scalar_mult(-k, point_neg(point))
    
       result = None
       addend = point
    
       while k:
           if k & 1:
               # Add.
               result = point_add(result, addend)
    
           # Double.
           addend = point_add(addend, addend)
    
           k >>= 1
    
       assert is_on_curve(result)
    
       return result
    
    
    # Keypair generation and ECDHE ################################################
    
    def make_keypair():
       """Generates a random private-public key pair."""
       private_key = curve.n
       public_key = scalar_mult(private_key, curve.g)
    
       return private_key, public_key
    
    
    
    private_key, public_key = make_keypair()
    print("private key:", hex(private_key))
    print("public key: (0x{:x}, 0x{:x})".format(*public_key))

    攻略到这里结束了~~~~~~

    展开全文
  • 攻防世界crypto

    千次阅读 2020-02-28 16:27:06
    1.告诉你个秘密 题目给了这样一串字符: 乍一看看不出什么,那就边猜边试吧。 既有数字又有字母,且字符个数是2的倍数,可能是十六进制吧。 那就将其转换成十进制,再根据asc码转化成字符。 cjV5RyBscDlJIEJqTSB0...

    1.告诉你个秘密

    题目给了这样一串字符:

    乍一看看不出什么,那就边猜边试吧。
    既有数字又有字母,且字符个数是2的倍数,可能是十六进制吧。
    那就将其转换成十进制,再根据asc码转化成字符。

    cjV5RyBscDlJIEJqTSB0RmhC
    VDZ1aCB5N2lKIFFzWiBiaE0g
    还是看不出来flag是什么样子的。
    难道方法不对吗?
    再试一次吧,再用base64解码,出现了这样的结果

    r5yG lp9I BjM tFhB T6uh y7iJ QsZ bhM
    还是不对,没想法了。
    后来查了百度之后说是键盘围绕加密(我的脑洞还是不够大啊)
    最后得到flag为TONGYUAN

    2.cr3-what-is-this-encryption

    在这里插入图片描述
    看到有q,p,e,c就可以知道是RSA加密
    因为φ(N) = (P-1)(Q-1)
    E * D % φ(N) = 1(D是私钥,E是公钥)
    M =C^ D mod N(M是明文)
    先将p,q,e转化为十进制,再根据公式计算出D,N,M。
    再将M转化成字符
    最后得到flag为ALEXCTF{RS4_I5_E55ENT1AL_T0_D0_BY_H4ND}

    3.flag_in_your_hand1

    打开附件,看到

    在这里插入图片描述
    打开网页,出现
    在这里插入图片描述
    按F12
    在这里插入图片描述
    看了java的源码,知道要让ic返回值为true.
    在这里插入图片描述
    而token里要填的是a数列里的每位数减3,转换 asc码得到的字符,输入后得到flag
    在这里插入图片描述

    展开全文
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的5分题,本篇是SM的writeup

    前言

    继续ctf的旅程
    攻防世界Crypto高手进阶区的5分题
    本篇是SM的writeup

    发现攻防世界的题目分数是动态的
    就仅以做题时的分数为准了

    解题过程

    得到三个文件和一段python

    from Crypto.Util.number import getPrime,long_to_bytes,bytes_to_long
    from Crypto.Cipher import AES
    import hashlib
    from random import randint
    def gen512num():
        order=[]
        while len(order)!=512:
            tmp=randint(1,512)
            if tmp not in order:
                order.append(tmp)
        ps=[]
        for i in range(512):
            p=getPrime(512-order[i]+10)
            pre=bin(p)[2:][0:(512-order[i])]+"1"
            ps.append(int(pre+"0"*(512-len(pre)),2))
        return ps
    
    def run():
        choose=getPrime(512)
        ps=gen512num()
        print "gen over"
        bchoose=bin(choose)[2:]
        r=0
        bchoose = "0"*(512-len(bchoose))+bchoose
        for i in range(512):
            if bchoose[i]=='1':
                r=r^ps[i]
        flag=open("flag","r").read()
    
        key=long_to_bytes(int(hashlib.md5(long_to_bytes(choose)).hexdigest(),16))
        aes_obj = AES.new(key, AES.MODE_ECB)
        ef=aes_obj.encrypt(flag).encode("base64")
    
        open("r", "w").write(str(r))
        open("ef","w").write(ef)
        gg=""
        for p in ps:
            gg+=str(p)+"\n"
        open("ps","w").write(gg)
    
    run()
    
    • 生成ps
    • 根据bchoose和ps生成r
    • 用choose生成key对flag做AES加密得到ef

    所以解题思路是

    • 根据ps和r得到bchoose
    • 通过bchoose得到choose
    • 然后解flag
    from base64 import b64decode
    from hashlib import md5
    from Crypto.Cipher import AES
    from Crypto.Util.number import long_to_bytes
    
    def cal_k():
        with open('ps','r') as f:
            ps=[long(x) for x in f.read().split('\n')[:-1]]
        with open('r','r') as f:
            r=long(f.read())
        pbits=[bin(x).rfind('1')-2 for x in ps]
        bc=['0']*512
        for le in range(512):
            ind=pbits.index(511-le)
            tt=bin(r)[2:].rjust(512,'0')[511-le]
            if tt=='1':
                bc[ind]='1'
                r^=ps[ind]
        return long(''.join(bc),2)
    
    def solve():
        with open('ef','rb') as f:
            ef=b64decode(f.read())
        key=long_to_bytes(int(md5(long_to_bytes(cal_k())).hexdigest(),16))
        aes_obj = AES.new(key, AES.MODE_ECB)
        return aes_obj.decrypt(ef)
    
    if __name__=='__main__':
        print solve()
    

    得到flag:flag{shemir_alotof_in_wctf_fun!}

    结语

    好奇的是题目名是什么意思

    展开全文
  • 攻防世界 crypto

    千次阅读 2021-10-24 15:10:52
    1.base 64 直接basse64解码得到flag 2.凯撒密码 使用工具直接解密,但是凯撒密码是0到25中的一个整数,需要进行尝试 3cookie 使用burpsuite抓包,构造/cookie.php,发送到repeater,然后点击send,从......

    1.base 64

    直接basse64解码得到flag

    2.凯撒密码

    使用工具直接解密,但是凯撒密码是0到25中的一个整数,需要进行尝试

    3cookie

    使用burpsuite抓包,构造/cookie.php,发送到repeater,然后点击send,从response中得到flag

    4.云隐密码

    特点:只有01248

    其中0作为分隔,将数字相加,匹配26个字母 

    5.Ascll

    Unicode特点:&#76;

    1. md5碰撞

    弱比较与强比较

    弱比较==

    强比较===

    使用数组强比较

    展开全文
  • 无题base64CaesarMorse混合编码Railfence base64 下得附件,扔进base64加密解密里面 就得到flag Caesar ...拿到附件,把文字贴到解密区(不知道位移是多少?一个一个试)最后得知位移为12位 ...一看题目就知道是摩斯电码...
  • 攻防世界crypto高手题之你猜猜 继续开启全栈梦想之逆向之旅~ 这题是攻防世界crypto高手题的你猜猜 下载附件,是一个.txt文件,打开,数字和字母: 504B03040A0001080000626D0A49F4B5091F1E...
  • 攻防世界CRYPTO

    2021-03-23 21:58:03
    攻防世界—新手区—CRYPTO base64 下载下附件之后打开 在网页中打开base64在线解密 将附件文档里面的一串字符放进在线解码工具中得到flag 得到flag cyberpeace{Welcome_to_new_World!}。 Caesar 下载好附件打开...
  • 攻防世界crypto 新手区攻略

    千次阅读 2020-03-22 18:13:07
    crypto主要是针对密码学的题,要想把crypto做好,就必须要对各种密码学进行研究。 1.base64 第一关较为简单,直接使用base64进行解密即可。 cyberpeace{Welcome_to_new_World!} 2.Caesar 第二关用到了凯撒码, 直接...
  • 攻防世界 crypto入门WP

    2020-06-29 22:53:49
    攻防世界 crypto入门WP 前言 下学期要求密码和Re,现在这俩几乎是空白,趁着暑假的功夫,最近也能闲下来,就学一学crypto,其实真正接触发现挺有意思的,各种密码的加密千奇百怪,层出不穷,也是需要慢慢积累经验,...
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的7分题,本篇是SM1的writeup
  • 攻防世界crypto easy_ECC

    2020-12-05 20:49:42
    攻防世界crypto easy_ECC 刚开始看见6分就知道不简单 看见文本之后联想到了py脚本(但可惜卑微的我不会)所以就照搬了大佬的脚本 import collections import random EllipticCurve = collections.namedtuple('...
  • 本篇是攻防世界 Crypto 新手练习区的全解
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的5分题,本篇是说我作弊需要证据的writeup
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的5分题,本篇是Easy_Crypto的writeup
  • 攻防世界 crypto 入门题之easy_ECC ...这题是攻防世界crypto 入门题之easy_ECC 下载附件,打开: 椭圆曲线ECC加密,没接触过,不懂原理,主要是找不到集成脚本,算了,浏览中发现一篇讲得透彻的博客: ...
  • 攻防世界crypto

    2019-09-28 10:47:19
    1、base64 看一下题目就知道这是一个base64加密,我们可以直接在网上...a = open('D:\\crypto1.txt','r') s = a.read() print(base64.b64decode(s)) flagcyberpeace{Welcome_to_new_World!} 2、Caesar 这一题也可以...
  • 攻防世界 crypto Caesar

    千次阅读 2019-10-26 19:47:39
    Caesar 题目 附件 oknqdbqmoq{kag_tmhq_xqmdzqp_omqemd_qzodkbfuaz} ...其实很简单,就是字母的偏移。 过程 凯撒密码,因为知道flag格式为cyberpeace{},所以o要对应c,所以计算差值为15,尝试解密和加密,发现偏移15...
  • 攻防世界crypto高手题之Decrypt-the-Message 继续开启全栈梦想之逆向之旅~ 这题是攻防世界crypto高手题的Decrypt-the-Message 下载附件,是个.txt文件,内容是诗歌,下面是一行四不像的英文,后来发现是加密后的...
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的4分题,本篇是onetimepad的writeup
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的5分题,本篇是RSA_gcd的writeup
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的2分题,本篇是flag_in_your_hand1的writeup
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的4分题,本篇是enc的writeup
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的3分题,本篇是Decrypt-the-Message的writeup
  • 这题是攻防世界crypto 入门题之easy_RSA RSA的密码学听说了好久,主要是战队的队友之前有研究,而我却是一点都不了解,这次遇到了,就研究一下做题方法和技巧,密码学目前是不打算深究了,毕竟数学也不太好,所以我...
  • 攻防世界 Crypto best_rsa

    千次阅读 2020-05-31 14:27:37
    成功解析出两个文件的公钥: 不难发现,两个文件的模数相同,想到同模攻击,通过脚本求得题解: from Crypto.PublicKey import RSA import libnum import gmpy2 c1=libnum.s2n(open('cipher1.txt','rb').read()) c2...
  • 1. Railfence 2.不仅仅是Morse
  • 这题是攻防世界crypto 高手进阶区之告诉你个秘密 下载附件,是个.txt文件,打开: (这里积累第一个经验) 虽然没有f,但是看起来就是16进制的基本组成单位0~F,既然是十六进制就不用先十六进制转字符串,目前接触的...
  • 继续ctf的旅程,攻防世界Crypto高手进阶区的3分题,本篇是你猜猜的writeup
  • 这题是攻防世界crypto 入门题之转轮机加密 下载附件: 好了,记住了,以后这个内容格式的就是转轮机加密了: 原理就是转齿轮把一个字母换成另一个,直接上一个修改后的大佬脚本: rotor = [ #这里是要输入的转...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 870
精华内容 348
关键字:

攻防世界crypto

友情链接: pytorch_coma.rar