美文网首页CTFctf
CTF_论剑场_writeup

CTF_论剑场_writeup

作者: Ithaca__Tavern | 来源:发表于2019-03-07 20:23 被阅读2次

    应平台的要求,所以对题目中的URL都进行了处理,在此也只是记录一个学习的过程。

    头像

    用16进制编辑器打开搜索flag就找到了,也算不上坑,就是找到的flag还要经过base64解密后再来进行MD5加密

    签到

    没什么说的,flag已经给了

    0和1的故事

    这题目我还是看了Writeup之后才知道的,题目的信息给的很明确,0和1,就是二进制编码,然后说空格和0很配,就是空格代表0了,然后一层一层的打开压缩包后发现一个.txt的文件,全选后发现确实有很多空格,但是到这里我就不明白了!

    看过writeup之后得知用16进制编辑器打开,才明白了

    20是空格表示1,那么09就表示0了,最后转换为16进制字符串就是最后的flag了

    web1

    分析给的代码就能够得到flag了,很容易,就不多说了

    image

    http://***.***.**.**:10001/?a

    这个人真的很高

    png图片,然后题目的信息也很明确,那么修改高度就能够得到一部分的flag,然后还有一部分用16进制编辑器打开后就在文件的尾部,但这不是最终的flag,当然也很明显,栅栏加密,多试几次就能够看到flag了

    web9

    题目给出的就是:put me a message bugku then you can get the flag

    Firefox改包:


    得到一段base64加密后的flag,解密一下就有了

    Snake

    反编译一下jar文件,然后在Game这个类中找到了计算flag的方法:


    Python代码:
    fake="eobdxpmbhf\\jpgYaiibYagkc{"
    flag=""
    for i in range(int(len(fake)/2)):
     flag=flag+chr(3^ord(fake[i]))
    for f in range(int(len(fake)/2)+1,len(fake)):
     flag=flag+chr(6^ord(fake[f]))
    print(flag)
    

    进制转换

    明确的说了是进制转换,然后f对应的102,所以用1212一个个试试,返现4进制的时候得到的是102,然后python写个脚本就出来了

    s=[1212,1230,1201,1213,1323,1012,1233,1311,1302,1202,1201,1303,1211,301,302,303,1331]
    flag=""
    for i in s:
      flag+=chr(int(str(i),4))
    print(flag)`
    

    流量分析

    很简单,直接搜索就出来了:


    web2

    凭手速是不太现实的,看下源码,那就通过Python来解决了:

    import re 
    import requests
    ​
    s = requests.Session()  
    url = '题目的URL'
    r = s.get(url)
    r.encoding = 'utf-8' 
    print(r.text)
    num = re.findall(re.compile(r'<br/>\s+(.*?)</p>'), r.text)[0]  
    print(num)
    r = s.post(url, data={'result': eval(num)})      
    print(r.text) 
    

    Web 5

    题目已经很良心的说了注入,sqlmap来一梭子就完事了!

    查看库得到:web5

    python2 sqlmap.py -u "http://**.**.***.***:10005/?mod=read&id=1" --current-db
    

    查看表得到:flag

    python2 sqlmap.py -u "http://**.**.***.***:10005/?mod=read&id=1" -D web5 --table
    

    查看字段得到:flag

    python2 sqlmap.py -u "http://**.**.***.***:10005/?mod=read&id=1" -D web5 -T flag --colums
    

    查看flag字段:

    python2 sqlmap.py -u "http://**.**.***.***:10005/?mod=read&id=1" -D web5 -T flag -C flag --dump
    

    Web 6

    image
    随便输入一个用户名,密码后提交,然后就抓包,X-Forwarded-For: 127.0.0.1
    image

    那么就尝试用字典开始爆破了,直接百度找了个常见的弱口令:


    用户名一开始就是用的admin,然后直接爆破密码得到是test123,就得到flag了;


    Web 11

    打开后是:We han't anything!

    <html>
    <title>
    robots
    </title>
    <body>
    ​
    We han't anything!
    ​
    </body>
    </html>
    

    查看robots.txt

    User-agent: *
    Disallow: /shell.php
    

    查看shell.php

    substr()函数返回字符串的一部分。

    import hashlib
    s="0e8061"
    def count_md5(strings):
        md5=hashlib.md5(strings.encode('utf-8'))
        ret=md5.hexdigest()
        return ret
    for i in range(1,1000000):
        key=count_md5(str(i))
        if key[0:6]==s:
            print(str(i))
    

    怀疑人生

    有三个文件:一个加密额压缩包两张图片


    第二张图片用binwalk分析了下,得到一个txt的文件里面有这些个东西:

    Brainfuck编码:https://www.splitbrain.org/services/ook

    解码得到:3oD54e

    然后看看是不是加密的压缩包的密码,试了下发现不是,但这串字符肯定是有用的,这个时候确实开始怀疑人生,也没看到哪里有提示!


    看过Writeup后,才真正明白,我是真的不会

    第一部分:

    第一个压缩包通过爆破得到密码是:pasword

    得到一串base64编码后的字符串,解码后得到:\u66\u6c\u61\u67\u7b\u68\u61\u63\u6b\u65\u72

    十六进制转字符串得到:flag{hacker

    第二部分:

    base58解码为字符串得到:misc

    第三部分:

    扫码得到:

    (通过手机还有草料 没有扫出来,这个网站可以:https://online-barcode-reader.inliteresearch.com/
    12580}

    神奇的字符串


    在这个网站都有的:http://ctf.ssleye.com/

    依次通过base64,base91,base58解码后就得到flag了

    web13

    在数据包的头部发现一个password:



    base64解码之后得到一个flag,但是并不是题目的flag,于是在题目中提交flag中的内容:



    依旧是密码错误,发现刷新后再次查看password的字符串已经是变化的,并不是固定的,不刷新提交后:

    刚开始没有引入会话对象Session,导致一直提交的是错误的,需要保证GET请求和POST请求在同一个会话当中才能够获得最终的flag:

    import base64
    import requests
    
    def get_flag(url):
        s = requests.Session()
        r = s.get(url)
        text=(r.headers['Password'])
        flag=bytes.decode(base64.b64decode(text.encode('utf-8')))
        flag=flag[5:-1]
        r = s.post(url, data={'password':flag})      
        return r.text
    

    txt500

    题目下载下来一共500个txt文件,也没有什么提示,还是套路吧,就是搜索下关键的字符串flag,key等等,但是一共500个文件,不可能一个文件一个文件的去搜索吧!这里可以直接通过UE来搜索多个文件的内容了,或者通过linux,在这里就说下怎么通过UE来搜索的:


    也可以点击左下的设置按钮匹配正则表达式什么的!最终找到:


    日志审计

    还是一样的套路,先搜索一波关键字,在flag里面发现了点东西


    image

    于是乎找到了黑客攻击的痕迹


    套路见的多了一眼就能够看出102、108、97、103对应着flag的ASCII编码
    解码下就能够得到flag了

    向日葵

    一张jpg的图片,用010Editor打开,常规的搜索下flag,key等没有发现什么,移到最后发现了Rar的文件头


    修改文件后缀名为.rar打开得到:


    可能是英文字母5*5的排列,先试试

    得到的就是:juijoldugjtfbty,提示最后一步凯撒密码,于是乎凯撒解密看看:

    发现最后这个可能是:ithinkctfiseasx提交不对,改成:ithinkctfiseasy,提交正确!

    相关文章

      网友评论

        本文标题:CTF_论剑场_writeup

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