NISACTF2022

NISA官方WP:

https://fjnusec.cn/2022/03/29/NISACTF2022-Official-WP/

MISC:

bilala的二维码

附件是一个破损的二维码:

 

 

 使用画图工具修复后:

 

 

 扫出来后是一个网址:https://video.gz2.com.cn/h666G/h666G_kzwIVy

得到一张jpg文件,

foremost 发现有一个压缩包:

 

 

 有密码,提示说:

 

所以爆破只用字母就好

 

 

 里面有个MP3文件,是摩斯密码

这次get一个在线解密网站:Morse Code Adaptive Audio Decoder | Morse Code World

tips:挂梯子会快很多,不挂的话也能进,但是很慢

得到:

 

 还要一个part,题目描述上还写着:

 

 回头发现foremost出来还有一个jpg文件:

 

 查看分辨率

 

 

得到flag:

NSSCTF{M0RS34ND282x231}

 

 

为什么我什么都看不见:

hex发现缺少文件头,尝试性不上后,依旧打不开:

 

 

 但是最下面有其他文件:

 

 

 改成压缩包之后发现还是没有什么:

 

 

 看到这个文本试了试NTFS流,依旧没有东西

然后,然后zsteg就直接梭了:

 

 

 还有就是stegsolver也可以找到:

 

 

 得到flag:

NSSCTF{Wlec0me_to_NiSa2022}

 

不愉快的地方:

osint的题Google找找,找找,就有flag了(绝对不是因为懒)

flag:

NSSCTF{清溪川_37.56,126.97_金贤民_6801}

 

bqt:

把滑稽的图编辑后移开可以得到一串十六进制的字符串

这个题和第一次周赛一道题一样的加密方法

直接上脚本:

flag=''
s=["c8","e9","ac","a0","c3","f4","e6","e5","f2","a1","a0","d4","e8","e5","a0","e6","ec","e1","e7","a0","e9","f3","ba","a0","e6","ec","e1","e7","fb","f7","e5","e6","e5","ef","e9","e4","ea","e7","ef","e5","e4","f3","e6","e9","ef","f2","f0","e5","e6","e4","e6","e7","e7","e6","e4","f3","e5","fd"]
for i in range(len(s)):
    flag+=chr(int(s[i],16)-128)
print(flag)

flag:

NSSCTF{wefeoidjgoedsfiorpefdfggfdse}

 

bmpnumber:

附件是一个bmp文件

文件名给了提示,wb4

使用wb4stego解密,密码为空,得到一张二维码

 

 

 一张奇怪的二维码,重新用新的定位符覆盖原来的

 

 扫出来是一个网址:http://qr61.cn/ogZAdB/qtOvmyN

 

 弱密码password得到一个word文档

进去之后有一串字符:

rdcvgtkopqwsztfvbhbhjmiklprfgyygbnjwsdredftwsdr

似乎解密解不出来

下载文档

发现后面有一串红色波浪线,

 

 

修改字体颜色之后就可以得到flag

 

 

NSSCTF{this_is_you_need_flag!}

 

破损的flag

USB流量分析

USB - CTF Wiki (ctf-wiki.org)

里面有个GitHub的脚本可以直接解密:

GitHub - WangYihang/UsbKeyboardDataHacker: USB键盘流量包取证工具 , 用于恢复用户的击键信息

然后

 

 得到一串奇怪的字符

ujkonjk,tfvbhyhjipokrdcvgrdcvgpokqwsztfvbhujkowazxdqasewsdrpokxdfviklpnjkwsdrrfgyrdcvguhnmkbhjmyhji

键盘密码,解出来

i m g u l f f l a g i s w e l c o m e t f j n u

拼一下就得到flag,并且要补齐to

NSSCTF{welcome_to_fjnu}

 

流量包里有个熊

不出意外,这个流量包里有个文件,

 

 

 

 然后正常思路扫一遍

Hex

 

 binwalk得到的压缩包里有俩txt文件

 

 短的没啥用

 

 rot13之后就可以发现这个是个十六进制

 

 扔进010editor

 

 保存后得到一张jpg文件

 

 然后使用水印工具

 

 yysy,反正我看不出来这个flag

flag:

NSSCTF{S0_clev2l_You}

PWN:

ReorPwn?:

一句话:

 

 flag:NSSCTF{1c112222-afcc-49c7-a1c4-218a520784f0}

 

RE:

string

64位无壳,flag在flag函数,伪代码:

char *__fastcall flag(char *a1)
{
  char *v1; // rax
  int v2; // ST34_4
  char *v3; // rax
  char *v4; // rax
  int v5; // eax
  char *v7; // [rsp+8h] [rbp-38h]
  int i; // [rsp+1Ch] [rbp-24h]
  int j; // [rsp+20h] [rbp-20h]
  int k; // [rsp+20h] [rbp-20h]
  int v11; // [rsp+24h] [rbp-1Ch]
  signed int l; // [rsp+28h] [rbp-18h]
  int v13; // [rsp+2Ch] [rbp-14h]

  v7 = a1;
  v13 = (_DWORD)a1 + 1;
  if ( (_DWORD)a1 << 30 )
  {
    while ( 1 )
    {
      v1 = v7++;
      if ( !*v1 )
        break;
      if ( !((_DWORD)v7 << 30) )
        goto LABEL_4;
    }
  }
  else
  {
LABEL_4:
    for ( i = (signed int)v7; !((i - 16843009) & ~i & 0x80808080); i = v2 )
    {
      v2 = v7[1];
      v7 += 4;
    }
    v3 = v7++;
    for ( j = *v3; j; j = *v4 )
      v4 = v7++;
  }
  puts("This a magic!");
  v11 = (_DWORD)v7 - v13;
  for ( k = 0; (signed int)v7 - v13 > k; ++k )
    v11 ^= 0x1Au;
  if ( v11 != 13 )
  {
    puts("error!");
    exit(0);
  }
  puts("The length of flag is 13");
  srand(seed);
  printf("NSSCTF{");
  for ( l = 0; l < 13; ++l )
  {
    v5 = rand();
    printf("%d", (unsigned int)(v5 % 8 + 1));
  }
  putchar(125);
  return &v7[-v13];
}

比赛的时候做,由于缺少经验,所以没认出关键字符

IDA逆向之常见的库函数伪代码的表现形式 | 码农家园 (codenong.com)

得知,这就是常见的strlen函数

但是吧,好像这个题不咋需要这个,

发现下面有个NSSCTF{字符串

后面的125ascii之后是}

那么flag就在这个循环里面了,

直接写个循环就得到了flag:

脚本:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
    int seed=10086;
    int i,v4;
    srand(seed);
    for(i=0; i<13; i++)
    {
        v4=rand();
        printf("%d",(v4%8 +1));
    }
    return 0;
}

 

更正,不管做题还是比赛要注意题目给的附件的文件类型,

这道题是个ELF文件,只能在虚拟机里编译运行C语言脚本,才能得到flag

 

 

flag:

NSSCTF{5353316611126}

这题尝试动态调试(记录第一次)

因为文件是ELF,所以使用Ubuntu的gdb进行动态调试

注意的点:

 

posted @ 2022-03-28 21:46  Luccky  阅读(1269)  评论(0编辑  收藏  举报