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

CCST-CTF 2019 部分 Writeup

作者头像
KAAAsS
发布2022-01-14 17:49:11
5860
发布2022-01-14 17:49:11
举报
文章被收录于专栏:KAAAsS's Blog

文章目录隐藏

终于咱也入了CTF坑23333 不多说,先上wp。

Misc

刘翔

比较明显的栅栏密码,看第一个f到l,所以6个一组。

刘翔跨栏可还行。

爆破一下?

发现有密码,无脑先修复一下,发现没用。拖进aapr,然后惊喜的发现我裂开了(指默认暴力和字典都不行)。之后打开发现说明密码为5位数字,

然后就完事儿了。

base64?

base64果然不行(

不过看到给出了字母表,于是百度了下base64的原字母表,写个py脚本映射就好。

红石电路

丢尽MultiMC,然后发现是简单的门电路。甚至还好心的给了不同门的实现。

从结果端逆推,拿着红石块放到红石线上做标记(可以点亮红石),然后就推出来了(

我觉得可以做个强模(逃

drcom

丢进InnoExtract,发现里面是个.c和其编译后执行文件。

strings找到的密码也不对,然后就没思路了。

我 裂 开 了。

仔细阅读发现,答案在EULA里……而且整句话也不含flag,这就更隐蔽了。

这里注意提交要带上最后的句号。真狠啊。

Pixel

按照Misc解题自动机(?),先丢进ps建两个图层,把混合模式从上到下滚动一遍。然后丢进BeyondCompare,调节容差看对比。可惜的是两种都没结果。

然后丢进010Editor文件比对,终于发现有点不同。于是将两段内容复制出来,发现xor后就是flag。

RE

BabyRE

搜索字符串,找xref到引用处。

写个脚本异或就完事了。

疯狂点击

这题做了两次,开始是队友做的,连点器点出来了flag,但是提交发现不是。

首先找入口。不会mfc啊……所以就断点,然后找到offset 0xE31154处。

然后就跟到了offset 0xE31006处,F5之后对代码进行简单处理。(内心os:为什么连点结果不对,看逻辑没看出来

简单处理就可以丢进cpp了,代码如下:

代码语言:javascript
复制
#include <iostream>
#include <cstdlib>
#include <Windows.h>

using namespace std;

unsigned char datas[] = {0x72,0xFF,0x0E,0xA5,0x6F,0xC3,0x3D,0x8C,0x53,0xCC,0x0C,0xA3,0x25,0xF0,0x30,0xAB,0x21,0xCC,0x1C,0xF2,0x4B,0xA6,3   ,0xAF,0x44,0xDA,0x0A,0xBF};

int main() {
    int v4; // ebx
    int v5; // ebx
    int v6; // ebx
    unsigned int magic_number; // ebx
    unsigned char magic_number_2[4];
    char *new_space; // eax
    char *flag; // esi
    unsigned int i; // edx
    int offset; // edi
    char *flag_i; // ecx
    char flag_val; // al
    int v15; // edi
    int v16; // eax
    srand(0x3164624Au);
    for (int i = 0; i < 114514; i++) {
        v4 = (unsigned __int8)rand();
        v5 = ((unsigned __int8)rand() << 8) | v4;
        v6 = ((unsigned __int8)rand() << 16) | v5;
        magic_number = (rand() << 24) | v6;
    }
    new_space = (char *) malloc(29u);
    magic_number_2[0] = *(((unsigned char *) &magic_number) + 0);
    magic_number_2[1] = *(((unsigned char *) &magic_number) + 1);
    magic_number_2[2] = *(((unsigned char *) &magic_number) + 2);
    magic_number_2[3] = *(((unsigned char *) &magic_number) + 3);
    flag = new_space;
    i = 0;
    do
    {
    flag_i = &flag[i];
    flag_val = datas[i] ^ magic_number_2[i & 3];
    ++i;
    *flag_i = flag_val;
    }
    while ( i < 28 );
    for(int j = 0; j < 28; j++) {
       // cout << flag[i] << endl;
    }
    printf("%s", flag);
    return 0;
}

然后发现结果和连点器是一样的,然后官方就发通知了,然后就没有然后了(

pwn

hof

主要是让条件成立。

阅读代码发现,可以通过service来达到目标地址。所以:

auth 233 service 23333333333333333333 login

然后就可以cat flag.txt(也可以先ls -al看看是什么文件)

easyprintf

虽然最后也没过,但是搞了一上午很自闭,贴下代码(

https://pastebin.com/30wqb7yC

Re:从零开始的pwn学习.jpg

Web

php代码审计

阅读代码,发现要绕过三层判断条件。第一个可以用数组,第二个也可以用数组,第三个就不能了。

然后发现可以科学计数法,然后就没有然后了

所以说动态类型不好啦((

这个加密见过吗

整个页面也只有favicon.png作为线索了。而且这张图还让我的postman裂开了。

丢进010editor,结合我裂开的postman,果然是因为ihdr的crc校验裂开了。首先想到修复宽高,python一跑发现是高度不对,改成0x0462就完事……诶等等图里面竟然是一个链接

打开发现一大堆颜文字,还好原先见过,这其实是aaencode(参见:论如何正确的收一个新年解谜红包),原理简单说就是字符串构造和eval。最简单的方法,就是开个网页F12丢console然后

就没有然后了。

后记

玩的还是很开心哒~这次CTF,有幸和@某昨和凡神组队,两位队友都贼强。虽然赛前都说没接触过,但是赛程A题都超快的w。说实话,刚开始队友光速做掉了web压力还是很大的Orz。最后,也很开心能拿到rank1。

另1/3的wp可以看@某昨的博客:https://blog.yesterday17.cn/post/ctf-2019/

如果还有什么特别印象深刻的……

“什么东西会背叛你呢?金钱会,女人会,但是pwn不会,不会就是不会,怎么学都不会”.jpg

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Misc
    • 刘翔
      • 爆破一下?
        • base64?
          • 红石电路
            • drcom
              • Pixel
              • RE
                • BabyRE
                  • 疯狂点击
                  • pwn
                    • hof
                      • easyprintf
                      • Web
                        • php代码审计
                          • 这个加密见过吗
                          • 后记
                          相关产品与服务
                          代码审计
                          代码审计(Code Audit,CA)提供通过自动化分析工具和人工审查的组合审计方式,对程序源代码逐条进行检查、分析,发现其中的错误信息、安全隐患和规范性缺陷问题,以及由这些问题引发的安全漏洞,提供代码修订措施和建议。支持脚本类语言源码以及有内存控制类源码。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档