menu Ga1@xy's Wor1d
ACTF2020部分wp
686 浏览 | 2020-06-16 | 阅读时间: 约 4 分钟 | 分类: wp,MISC | 标签: Misc,比赛wp
请注意,本文编写于 461 天前,最后修改于 273 天前,其中某些信息可能已经过时。

WEB

PHP代码审计入门题

虽然只是一道入门题,但是对于我一个web萌新来说也学到了很多姿势

先看代码

<?php
error_reporting(0);
include_once "flag.php";
show_source(__FILE__);

session_start();


if(!isset($_POST['key'])) {
    die("not allow!");
}

if($_POST['key'] != $_SESSION['key']) {
    die("Wrong key!");
}

if(isset($_GET['username']) && isset($_GET['password'])) {
    if($_GET['username'] == $_GET['password']) {
        die("Your password can not be your username!");
    }
    if(md5($_GET['username']) === md5($_GET['password'])) {
        echo $flag;
    }
}

根据代码逻辑,要先绕过session验证,再绕过MD5的全等于===

绕过session验证参考这篇文章,只需要用post传入空的key,即key=

再看绕过md5,由于是===,所以无法用0e开头的字符串绕过,但是可以用数组绕过,参考文章

构造方法如上图,得到flag:ACTF{8rh8ReeRE9rh3s8134koURHW32}

MISC

晚安

下载附件得到一张图片,010editor查看可以发现文件尾后有数据,binwalk分离,可以得到一个压缩包,解压可以得到另一张wanan.png舔狗日记.crypto,分别看这两个文件

wanan.png

两张一模一样的图片,很容易想到由两张图构成的隐写方式:盲水印

GitHub上常用的解盲水印的脚本有两个,而需要注意的是此题用到的是python3的脚本,即bwmforpy3.py,如果用另一个脚本,在此题无法解出盲水印(压缩包里的图片命名为wanan2.png

python bwmforpy3.py decode wanan.png wanan2.png out.png

查看得到的out.png,即可得到一串字符串:ARJXU4MjE0

舔狗日记.crypto

.crypto后缀为Encrypto这个工具加密得到的文件格式,加密的密钥就是盲水印得到的ARJXU4MjE0,解密可以得到一个文件夹,里面有两个docx文件以及一个bmp文件,第一个docx文档可以正常打开,但里面并没有隐写的痕迹,所以我们尝试binwalk分离文件,可以从中得到remember.zip,其中内容

那天,你告诉了我你最重要的8个数字,我记住了

当然此处也涉及到一个考点:docx文档的另一种形式为zip

所以我们也可以直接将舔狗日记1.docx的后缀改为zip,就可以直接看到其中隐藏的压缩包

hashcat爆破

压缩包提示文档密码为8位数字,所以现在需要爆破office,除hashcat外也有其他的一些工具可以用来爆破office,比如AOPR,但是效率很低,8位密码要爆破很久很久,所以此处采用hashcat爆破

关于hashcat的使用可参考:https://www.freebuf.com/sectool/164507.html

爆破office密码需要先用到office2john.py来获取文档的hash值,可在此处下载得到,然后运行

python office2john.py 2.docx > hash

打开得到的hash,删除开头冒号及之前的部分,得到

$office$*2007*20*128*16*e8acb3ffadb859fcd9c0f38906f5a9b5*dc0a3deef00efb5fcdc115daa4784734*f97102e56fc53cf48fedba9a927e149d711928b2

可以看到是2007版本的office,再找到对应版本的hash类型

Office97-03(MD5+RC4,oldoffice$0,oldoffice$1):   -m 9700  
Office97-03($0/$1, MD5 + RC4, collider #1):   -m 9710 
Office97-03($0/$1, MD5 + RC4, collider #2):   -m 9720 
Office97-03($3/$4, SHA1 + RC4):   -m 9800 
Office97-03($3, SHA1 + RC4, collider #1):   -m 9810 
Office97-03($3, SHA1 + RC4, collider #2):   -m 9820 
Office2007:   -m 9400  
Office2010:   -m 9500 
Office2013:   -m 9600

对应-m 9400,直接用hashcat爆破即可(hash是刚导出的hash值文件名)

hashcat64.exe -m 9400 hash -a 3 ?d?d?d?d?d?d?d?d -w 3 -O

在出现选项时什么都不要选,稍微等一下,就会出现爆破的结果

得到结果:19990821

打开第二个docx文件,显示隐藏文字后将全部文字颜色换成深色,即可看到隐藏的文字

bmp隐写

最后还剩一张bmp图片没有用到,图片考点为bmp隐写,需要用到工具wbStego4.3open,其中的密码就是在docx文档中隐写的内容,输入密码后,将解得的内容另存为txt文件,即可看到最后的flag

flag

ACTF{Tr1edT0f0rgeTy0uBuTf1nallyTurnsT0f0rg1ve}

Let's dance

详解

下载附件是一张图片,010editor打开可知文件尾有多余数据,直接binwalk分离,由于分离得到的压缩包是伪加密,所以在binwalk时可以直接将压缩包内部的东西也分离出来,打开里面的txt,得到一个网盘链接

链接:https://pan.baidu.com/s/1CiNtkUut4HR99QUpLQbPLg 
提取码:fykq

下载得到一个视频,根据原题所给hint

http://virtualdub2.com/ 
http://www.compression.ru/video/stego_video/src/msu_stegovideo.zip

可以知道是一种视频隐写形式,在之前的HGAME2020中也出过这种题,而且用到的工具也一样

在上面两个网址分别下载得到VirtualDub2和隐写插件MSU StegoVideo,将vdf后缀文件放在plugins32文件夹中,再运行32位的程序即可

打开程序,File → Open video file,打开刚刚下载的视频,然后Video → Filters → Add,加载隐写插件后点OK

弹出MSU StegoVideo插件窗口,选择Extract file from video,可以看到需要密码,所以接下来需要寻找密码

在最开始给的图片备注中可以看到这样一条信息

Guess what? You_can_really_dance

Guess提示为outguess隐写,后面给的You_can_really_dance则为outguess的密钥

outguess -k You_can_really_dance -r Lets_dance.jpg out.txt

打开得到的out.txt,得到视频隐写的密码:8687125

输入密码,选择分离文件的路径,之后一直OK出来,将进度条拉到视频最开始处,然后Go → Preview filtered(或者直接按回车),等视频放完一遍,再看输出的文件里,就有隐写的内容了

Good job. You deserve it.
5peWV4aWFuZ3Fpd3VtYXd

用下面的字符串解压加密的压缩包,打开就是flag

flag

ACTF{oMaewa_Mou_sh1nde1ru}

520

题目详解

附件给了一个加密的zip包和一个gif,查看gif,发现只有两种颜色而且交替出现,将每一帧都分离出来

convert 520.gif out.png

两种颜色且总数为40,考虑转为01序列,粉色为1,红色为0,数量不多手撕一下即可

0110111101101000001000010100101101001111

转换成ASCII码,得到oh!KO

再看压缩包,hint中提示伪加密,用工具ZipCenOp解开得到forever.wav,结合刚才得到但还没用上的oh!KO推测音频是一种需要密钥的加密隐写,想到steghide

steghide extract -sf forever.wav -p 'oh!KO'

打开得到的flag.txt就有flag

flag

ACTF{55520_st3GhiDe_lOove}

Whale

前言

搭建docker环境可参考:http://www.ga1axy.top/index.php/archives/38/

题目详解

启动docker服务

service docker start

将docker镜像pull下来

docker pull registry.cn-hangzhou.aliyuncs.com/in1t/whalefall:misc

查看镜像信息

docker images

得到IMAGE ID1e89e3b91125

开一个容器运行该镜像(启动交互式终端)

docker run -it 1e89e3b91125

执行env指令查看该镜像的环境变量,发现hint1

通过执行此命令也可以判断出该镜像是linux环境

根据提示,使用history指令查看命令的历史执行记录

将里面的echo命令复制出来并执行,得到hint2

利用find命令找到whalefall.tar.gz的位置

移动到改目录,将此文件解压

得到一个需要密码的压缩包和另一个文件,根据其文件名得知另一个hint的位置

利用find命令结合xargs命令,在/usr目录搜索hint3

注:find命令本身不支持使用管道|来传递参数,所以需要结合xargs,可参考这里

查找得到文件名/usr/lib/engines-1.1/controls,利用cat命令输出内容,得到Ook编码的字符串,在线网站解码,得到压缩包密码

Zip Password: Dockerhub_1s_a_n1ce_place

查看本机容器id

docker ps

其中的CONTAINER ID即为对应本机的容器id,得知id后即可将whalefall.zip拷贝出来

docker cp [容器id] [docker中文件路径] [拷贝目的路径] 
# 以我自己为例
docker cp 1fbf4a6d8396:/usr/share/apk/keys/x86_64/whalefall.zip /root/下载

解压后010editor打开文件,发现文件尾有多余数据

-.. --- -.-. -.- ...-- .-. .... ..- -... .---- ... .... .- .-. -.. - ----- .-.. ----- --. .---- -. ..... ..... .....

解morse码,即可得到flag

结束后利用rmi命令删除镜像,再停止docker服务即可

docker rmi 1e89e3b91125  # rmi后接镜像的IMAGE ID
service docker stop

flag

ACTF{DOCK3RHUB1SHARDT0L0G1N555}

全部评论

info 评论功能已经关闭了呐!