zoukankan      html  css  js  c++  java
  • SWPUCTF 2019总结以及部分WP

      本次SWPUCTF开赛了,一共做了5个misc+2个web,RE和Android没时间看= =,pwn完全不会,果然又是和去年一样划水。题目都出的很不错,做题的时候思路其实也容易想到,剩下几个web有思路但是最后还是没有做出来。

      简单写个WP吧。

      本次比赛的部分文件我已保存上传至xxx。懒得上传,需要的话找我拿吧。

    一、MISC

    神奇的二维码

      下载之后是一个二维码,直接扫描后是一个fakeflag,直接binwalk先扫描一波

    可以发现里面有几个rar,将其分离出来,其中两个rar解出来都是没有东西的,只有最后那个flag.doc下面的一大串字符,用base64解密发现可以转换。

     那么就写一个简单的Py脚本吧= =,当然也可以手动一直转换。

    import base64
    
    with open('./1.txt') as f:
        s = f.readlines()[0].strip()
        try:
            while True:
                s = base64.b64decode(s)
        except:
            print(s)
    View Code

     然后加上swpuctf{}提交就可以了。这道题就算是签到题吧。

    漂流的马里奥

      打开直接运行会在所在目录生成一个1.txt,内容如下

     还是继续使用binwalk分离内部文件,其下面有个50000.rar,打开后发现也就是1.txt的压缩包,我们使用010 editor查看一下16进制源码

     发现其比普通的rar文件多了CTM部分和STM部分,搜索一下发现CMT就是压缩包的注释部分,那么STM是什么呢,同样我还发现STM部分包含flag.txt这肯定就是隐藏的flagle,在google上搜索RAR STM相关关键字后我找到了这样一篇博文,大概就满足我们所说的隐藏信息。

    再继续搜索相关NTFS流的资料后我找到了获取这个数据流的方法。如下,更多关于NTFS流的信息可以自行再搜索相关资料。

    伟大的侦探

      从这个标题就知道和福尔摩斯相关,打开密码.txt后如下

     根据提示编码错误,我们使用010 editor转换编码,最后发现密码如下

     然后misc文件夹下的内容如下

     果然还是和福尔摩斯有关的,这也就是归来记中的跳舞的小人,但是这只是简单的按照书中的码表进行转换,和其真正的解密方法(根据出现频率解密)不相同,最后对照网上的码表得到flag

    swpuctf{iloveholmesandwllm}。

    你有没有好好看网课

    打开有flag2.rar,和flag3.rar,都有加密,经检测不是伪加密,那就爆破吧,flag3是可以被爆破的,然后里面就是我们人见人爱的影流之主了,flag.doc内容如下,

     根据题目的提示,我们去看一下这些数字的帧数。

     

     这两帧的灯位置都有隐藏信息,提取出来如下

    ..... ../... ./... ./... ../
    dXBfdXBfdXA=

    第二行直接可以base64解密,第一行最开始猜测是莫斯加密,可是对不上莫斯的码表,最后一个个尝试之后发现其是敲击码,得到密码

    wllmup_up_up,用这个密码可以打开flag2.rar。然后010 editor打开就可以发现在末尾的flag了。

    Network

    下载后发现里面只有一个txt文档,而且里面只有四个数字

     这道题比较误导人的地方就是,它的标题叫做Network,刚好这四个数字又对应了四个网关地址,于是方向错误,最后对比其二进制才发现端倪,这四个数字转成8位二进制后,只有最高两位二进制不同,我们尝试写一个脚本将其最高两位提取出来,并且4个一组转换位ASCII。发现写出来的16进制数开头是50 4B,应该也就是zip了,脚本如下

    fp = open('t.txt','r')
    a = fp.readlines()
    p = []
    for i in a:
        p.append(int(i))
    s = ''
    for i in p:
        if i == 63:
            a = '00'
        elif i == 127:
            a = '01'
        elif i == 191:
            a = '10'
        elif i == 255:
            a = '11'
        s += a
    
    import binascii
    flag = ''
    for i in range(0,len(s),8):
        flag += chr(int(s[i:i+8],2))
    flag = binascii.unhexlify(flag)
    wp = open('ans.zip','wb')
    wp.write(flag)
    wp.close()
    View Code

    打开后发现需要密码,010查看发现全局加密和局部加密位不一,也就是伪加密了,改09 为 00后打开

    然后又是一大串的字符,不说了上base64,解密得到flag

    flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

    easy_web

    打开如下,一个登陆注册界面,随意注册个账号。

     可以发现可以申请广告。

     然后发现其是可以实现XSS的,但是这题管理员并不上线,所以XSS没有什么用

     后面经过了一些测试发现之后,广告详情的SQL是通过广告名进行搜索的,所以这里可能实现二次注入,猜测SQL为(做完题后再猜测的)

      

    select xx from xxx where title='xxx' limit 0,1

    然后尝试之后发现过滤了or,sql,join,空格,#,-等一些字符,期间最头疼的就是过滤了or,那么order和information_schema都不能使用了,查询字段我们还可以用union select,但是咋查表呢,最后我是自己手动猜出来的,数据库为web1,下面有users表,里面有name和pass字段,admin的pass就是最后的flag,构造如下广告

     没错,有22列,然后点击广告详情就可以得到flag的md5了,根据题目说明使用somd5解密即可得到flag

     这题的很多细节,比如查列数以及如何构造sql就不再说了,这里就只讲一下最后的payload实现。

    简单的Python

    比赛结束了 = =题目下线了,没法复现了。

    emmm这题不知道是不是出题人失误啊,猜了个redis密码为password竟然直接连接上了。

    然后就用了一波别人的session获得了flag...

     


    WEB3弄出了secretkey了,下一步应该是个ssti了,但是周六周天都有事= =没有做了。

  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/xenny/p/12004752.html
Copyright © 2011-2022 走看看