前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安恒四月春季战——DASCTF部分wp

安恒四月春季战——DASCTF部分wp

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

6G还远吗(签到题)

附件大小将近1G,既然是签到题,那么题目肯定很简单,1G的文件下载的很慢,所以肯定不会是把整个附件下载完,所以本题涉及到的考点为断点下载,即下载几秒钟后停止下载,将下载得到的部分文件用winhex查看,即可在文件开头发现flag

blueshark

下载附件得到一个流量包,查看可知为有关蓝牙音频的流量包,导出文件发现任何文件都没有,丢进binwalk查看,可以看到一个7-zip压缩包,但是binwalk无法直接提取,在此提供两种方式:

① 第一种方法可以用dd命令,先用binwalk查看得到起始位置,然后用dd命令分离

代码语言:javascript
复制
dd if=1.pcapng of=1.7z bs=1 skip=24437
# if=1.pcapng  输入文件名
# of=1.7z      输出文件名
# bs=1         一次读写块的大小为1byte
# skip=24437   从输入文件开头跳过24437个块后开始复制

② 第二种方法可以直接用wireshark提取

查找字符串7z即7-zip文件头,找到后选中下面7z文件那一块,左上角文件→导出分组字节流,文件另存为7z后缀即可

提取出来压缩包,打开后发现被加密,而且文件名提示password_is_Bluetooth_PIN,直接在刚刚搜索7z的位置搜索PIN,查找到第二个时即可发现密码:141854

解压得到flag:flag{6da01c0a419b0b56ca8307fc9ab623eb}

Keyboard

下载附件得到一个raw文件和一个secret,先看raw文件,即镜像文件,初步断定其为内存取证,我先用了AXIOM这个工具查看了一下镜像文件(此工具相关可看这里),使用痕迹中可以发现一个t.txt文件

观察文件的路径为keyboard-log,再结合题目Keyboard可以推测这个文件和解题有关,但由于这个工具无法导出文件(或者可以但是我不会),所以接下来我用volatility提取了这个文件

代码语言:javascript
复制
volatility -f Keyboard.raw imageinfo  
# 查看镜像版本
volatility -f Keyboard.raw --profile=Win7SP0x64 filescan | grep -E 'txt'
# 直接定向检索txt文件
volatility -f Keyboard.raw --profile=Win7SP0x64 dumpfiles -Q 0x000000003d700880 -D ./
# 将其dump下来

得到一个dat后缀文件,strings命令查看,我将其中比较重要的信息提取了出来

代码语言:javascript
复制
2020- 3-29 22:36:41
ctfwikiCRYPTO ABC
CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA
2020- 3-29 22:39:24
But the password is in uppercase

第一条信息提示在ctfwiki的crypto分类中可以找到这种密码,对应链接在这里,经过尝试是键盘密码的一种

解密后得到明文为

代码语言:javascript
复制
大写:VERACRYPTPASSWORDISKEYBOARDDRAOBYEK
小写:veracryptpasswordiskeyboarddraobyek

小写可以看出是VeraCrypt的密码为KEYBOARDDRAOBYEK(txt中提示了密码大写)

再看secret那个文件,用VeraCrypt这个工具挂载加密卷,密码是刚得到的字符串,挂载后得到一个vhd文件,vhd文件可以挂载,方法如下

代码语言:javascript
复制
此电脑 → 管理 → 选中一个分区 → (右键)磁盘管理 → 附加VHD

附加后打开新建的那个新加卷,得到一个flag.txt(文件被隐藏)以及一个假flag,取消文件隐藏后cmd查看,发现为NTFS隐写,notepad查看一下即可得到flag

代码语言:javascript
复制
dir /r
notepad flag.txt:hahaha.txt

flag:flag{4a02f6dc603c377a234df479609d237c}

入门reverse

下载附件得到一个exe文件,丢进ida,F5到关键部分

在下面的for循环中涉及到了i - 112,但是很明显i最大才为v5的长度,所以直接编写程序肯定不对,观察v5和v6后面注释的内容,A0h-30h恰好为70h,换成十进制也就是112,所以for循环中v6的i - 112也就是v5数组,再根据这个加密过程编写解密代码即可得到flag

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;

int main(){
    char v5[10010]="akhb~chdaZrdaZudqduvdZvvv|";
    for(int i=0;i<strlen(v5);++i)
        v5[i]=(v5[i]-1)^6;
    cout<<v5;
    return 0;
} 

得到flag:flag{daef_wef_reverse_sss}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 6G还远吗(签到题)
  • blueshark
  • Keyboard
  • 入门reverse
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档