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流量分析
里面有个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进行动态调试
注意的点: