前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ACTF2020部分wp

ACTF2020部分wp

作者头像
回天
发布2023-04-25 15:18:49
2660
发布2023-04-25 15:18:49
举报
文章被收录于专栏:Ga1@xy's W0r1dGa1@xy's W0r1d

WEB

PHP代码审计入门题

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

先看代码

代码语言:javascript
复制
<?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开头的字符串绕过,但是可以用数组绕过,参考文章

image-20200610192114266
image-20200610192114266

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

MISC

晚安

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

wanan.png

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

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

代码语言:javascript
复制
python bwmforpy3.py decode wanan.png wanan2.png out.png

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

image-20200610205455197
image-20200610205455197
舔狗日记.crypto

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

代码语言:javascript
复制
那天,你告诉了我你最重要的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值,可在此处下载得到,然后运行

代码语言:javascript
复制
python office2john.py 2.docx > hash

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

代码语言:javascript
复制
$office$*2007*20*128*16*e8acb3ffadb859fcd9c0f38906f5a9b5*dc0a3deef00efb5fcdc115daa4784734*f97102e56fc53cf48fedba9a927e149d711928b2

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

代码语言:javascript
复制
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值文件名)

代码语言:javascript
复制
hashcat64.exe -m 9400 hash -a 3 ?d?d?d?d?d?d?d?d -w 3 -O

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

image-20200610234501024
image-20200610234501024

得到结果:19990821

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

image-20200610234837069
image-20200610234837069
bmp隐写

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

flag
代码语言:javascript
复制
ACTF{Tr1edT0f0rgeTy0uBuTf1nallyTurnsT0f0rg1ve}

Let's dance

详解

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

代码语言:javascript
复制
链接:https://pan.baidu.com/s/1CiNtkUut4HR99QUpLQbPLg 
提取码:fykq

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

代码语言:javascript
复制
http://virtualdub2.com/ 
http://www.compression.ru/video/stego_video/src/msu_stegovideo.zip

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

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

image-20200611140125138
image-20200611140125138

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

image-20200611140613748
image-20200611140613748

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

image-20200611140850804
image-20200611140850804

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

代码语言:javascript
复制
Guess what? You_can_really_dance

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

代码语言:javascript
复制
outguess -k You_can_really_dance -r Lets_dance.jpg out.txt

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

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

代码语言:javascript
复制
Good job. You deserve it.
5peWV4aWFuZ3Fpd3VtYXd

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

flag
代码语言:javascript
复制
ACTF{oMaewa_Mou_sh1nde1ru}

520

题目详解

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

代码语言:javascript
复制
convert 520.gif out.png
image-20200614184126803
image-20200614184126803

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

代码语言:javascript
复制
0110111101101000001000010100101101001111

转换成ASCII码,得到oh!KO

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

代码语言:javascript
复制
steghide extract -sf forever.wav -p 'oh!KO'

打开得到的flag.txt就有flag

flag
代码语言:javascript
复制
ACTF{55520_st3GhiDe_lOove}

Whale

前言

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

题目详解

启动docker服务

代码语言:javascript
复制
service docker start

将docker镜像pull下来

代码语言:javascript
复制
docker pull registry.cn-hangzhou.aliyuncs.com/in1t/whalefall:misc

查看镜像信息

代码语言:javascript
复制
docker images
image-20200616155149516
image-20200616155149516

得到IMAGE ID1e89e3b91125

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

代码语言:javascript
复制
docker run -it 1e89e3b91125

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

image-20200616160512624
image-20200616160512624

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

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

image-20200616160628088
image-20200616160628088

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

image-20200616160713436
image-20200616160713436

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

image-20200616161354701
image-20200616161354701

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

image-20200616161658397
image-20200616161658397

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

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

image-20200616162453045
image-20200616162453045

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

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

代码语言:javascript
复制
Zip Password: Dockerhub_1s_a_n1ce_place

查看本机容器id

代码语言:javascript
复制
docker ps

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

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

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

代码语言:javascript
复制
-.. --- -.-. -.- ...-- .-. .... ..- -... .---- ... .... .- .-. -.. - ----- .-.. ----- --. .---- -. ..... ..... .....

解morse码,即可得到flag

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

代码语言:javascript
复制
docker rmi 1e89e3b91125  # rmi后接镜像的IMAGE ID
service docker stop
flag
代码语言:javascript
复制
ACTF{DOCK3RHUB1SHARDT0L0G1N555}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WEB
    • PHP代码审计入门题
    • MISC
      • 晚安
        • wanan.png
        • 舔狗日记.crypto
        • hashcat爆破
        • bmp隐写
        • flag
      • Let's dance
        • 详解
        • flag
      • 520
        • 题目详解
        • flag
      • Whale
        • 前言
        • 题目详解
        • flag
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档