• 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了,但是周六周天都有事= =没有做了。

  • 相关阅读:
    postman: 字符串与数字的转换
    postman:截取字符串字符
    postman:获取txt变量中数据
    postman:参数化外部文件txt、csv、json
    postman:全局变量、环境变量、collection模块变量
    windows下更新python报错permission denied
    vertica 7.0 使用kafka
    Kafka报错-as it has seen zxid 0x83808 our last zxid is 0x0 client must try another server
    vertica 8.0 新特性
    mysql source导入报错ERROR 1366的解决方法
  • 原文地址:https://www.cnblogs.com/xenny/p/12004752.html
Copyright © 2020-2023  润新知