目录
官方WP:https://ctf-show.feishu.cn/docx/UpC6dtDqgo7VuoxXlcvcLwzKnqh
MISC
杂项签到
解压后打开得到一张图片。
使用010Editor直接查找ctfshow得到flag。
损坏的压缩包
得到压缩包后无法解压,提示不是压缩文件。
使用010Editor查看文件头,确定文件格式。
确定文件为png文件,将后缀名改为png,得到flag。
谜之栅栏
解压压缩包得到两个文件,根据文件名提示使用010Editor进行比较。
比较后得到类似flag的两个字符串,再根据题目名提示,使用栅栏解密得到flag。
你会数数吗
解压文件后使用文本文打开。
根据题目名提示,统计所有字符个数,并按降序排序字符。
你会异或吗
解压后文件无法打开,根据题目名和提示信息,使用010Editor将文件每个字节进行0x50异或,得到新文件打开看到flag。
flag一分为二
解压得到一张图片。使用pngdebugger检测到CRC出错。
判断图宽或图高存在问题,使用脚本恢复图的宽高,得到一半后半部分flag。
根据题目名提示还有上半部分flag,根据下班部分的flag可以推测上半部分flag也是水印形式。使用WaterMark查看图片盲水印得到flag上半部分。
黑丝白丝还有什么丝?
题目为一段视频,根据题目名提示,观察黑白变化,同时注意转场变化。
结果:白黑黑、白白白白黑、黑白、黑、黑、黑黑黑黑黑、黑白白白、白白白黑黑、黑黑、黑黑黑、白黑白、白、黑白黑白、白白黑、黑、白、白白。
最后一个转场是特殊情况,后面两个白白是拜拜的意思。
根据提示使用摩斯密码解密。
将解密后的字符串使用ctfshow{}格式包裹。
我吐了你随意
解压得到一个文本,根据文本名提示使用了0宽隐写,直接在线 http://330k.github.io/misc_tools/unicode_steganography.html 破译得到flag。
这是个什么文件?
压缩包解压是需要密码,使用010Editor查看使用了伪加密,将核心目录记录区通用位标记字段(控制加密)改为0000即可。
将更改后的压缩包解压得到文件名为2的文件,使用010Editor查看,结尾部分有module,判断文件为pyc文件,将文件名改为2.pyc。
使用终端进行pyc反编译。注意:使用前安装uncompyle6模块。
得到2.py文件后打开,运行代码即可得到flag。
抽象画
解压后是一串字符,类似Base加密,使用basecrack进行多重Base解密。
解密后得到一段十六进制数,根据前8个字节判断为png的二进制数据。将这段数据通过010Editor导入十六进制文件并将后缀命名为png。
根据图像和题目名提示,使用了Npiet直接进行解析得到flag。
迅疾响应
解压得到一个二维码,使用在线工具进行解密,得到前半部分flag,再对最左边纠错区进行破坏后进行解密,得到后半部分flag。
我可没有骗你
压缩包设有密码,且不是伪加密,直接使用archpr通过掩码方式破译密码。
解压后得到一个mp3文件,使用010Editor查看文件,发现文件为wav,更改文件后缀。
使用SilentEye对音频进行解密,先调高音频质量,在进行解密,得到flag。
你被骗了
解压之后得到mp3文件,使用MP3Stego导出隐藏文件,其中密码为文件名。得到文件打开就可以得到flag。
一闪一闪亮晶晶
解压文件,不要密码解压得到汉信码(四角都是司字形,二维码是回字形),还有一个需要解压密码才能得到的m4a音频文件。
使用在线工具解密汉信码得到解压密码,解压出音频。
播放音频,使用RX-SSTV破解音频,得到flag图片,在此之前先使用audiorepeater开启虚拟声卡。
一层一层一层地剥开我的♥
双击压缩包,提示文件损坏,点击确定后查看文件,发现是word文件,更改压缩包后缀为docx。
打开word文件,发现奇怪的文字,更改字体,得到英文提示。
使用010Editor查看word文件的文件模板,发现显示不了,证明文件中隐藏文件。使用binwalk命令分离文件。
得到有用文件后缀为rar的压缩包,解压时需要密码,通过上面得到的英文提示,查找小星星的简谱,得到解压密码。
解压得到一张jpg图片和一个文件,使用010Editor打开jpg文件,发现图片中隐藏了一张jpg图片。通过删除前部分,得到隐藏的jpg文件。
使用010Editor查看文件头和文件尾,发现是去头的rar文件,补齐文件头和后缀,再解压文件,解压密码为上面图片的明水印。
解压后得到文本文件,有一堆Emoji表情组成,使用Base100解密得到flag。
打不开的图片
解压后得到一个打不开的png图片,使用010Editor查看发现前四个字节与png前四个字节各相加为100,对数据取反得到png正确格式,打开新图片得到flag。
WEB
web签到
打开链接,得到PHP代码,分析代码。
令cookie中传入CTFshow-QQ群:=a,则有$_POST['a'],令post中传入a=b,则有$_GET['b']。
令get通过?传入b=c,则有$_REQUEST['c'],令c=1,则有$_REQUEST[$_GET[$_POST[$_COOKIE['CTFshow-QQ群:']]]]=1。
使c[6][0][7][5][8][0][9][4][4]=system("ls /")。system("ls /")表示查看该文件下的文件,找到f1agaa文件。
再使$_REQUEST[$_GET[$_POST[$_COOKIE['CTFshow-QQ群:']]]][6][0][7][5][8][0][9][4][4]=system("cat /f*"),查看f开头的文件内容。
以上命令通过插件HackBar传入,直接得到flag。
web2 c0me_t0_s1gn
直接F12打开页面底层,得到上半部分flag和下半部分的提示。
根据提示打开控制台,再根据提示在控制台上调用函数g1ve_flag(),得到下半部分flag。
我的眼里只有$
打开链接,得到PHP代码,分析代码。
令_=a0,$a0=a1,$a1=a2......,使用脚本将变量计算出来。再将变量通过post方式传入,最后将最后一个参数的值表示成查询。
一言既出
打开链接,得到PHP代码,对代码进行分析。
isset()函数用来验证是否参数不为空,即有参数传入。
assert()函数将字符串里面的代码当做PHP代码运行,当代码语法不出问题时返回True。
die()函数退出运行并输出提示字符串。
or的特点:当左边为真时右边不执行,只有当左边不为真时右边才会执行。
将num的值设置成114514);(0时,or左边为真,绕过die()函数,得到flag。
将num的值设置成114514);//时,or和右边部分全部被注释掉不执行,也就绕过了die()得到flag。
驷马难追
打开链接,得到PHP代码,对代码进行分析。
preg_match()函数用于匹配正则表达式,当有匹配的字符出现在表达式中,则返回1。
要绕过die()并且不能出现正则表达式中的字符,只能通过算术使or左边等式成立。
由于114514+1805296=1919810,令num=114514+1805296,先对+进行url加密,再通过url进行传值,得到flag。
TapTapTap
打开链接,F12,进入控制台进行跟踪,发现一串密文,对密文进行Base64解密,得到提示根据提示找到flag。
化零为整
打开链接得到PHP代码,分析代码。
count()函数用于统计数组个数。
strlen()函数用于统计字符串个数。
想要绕过die()函数,则GET传入的数组中字符串长度不能超过1,一个汉字使用url编码有三个。先将“大牛”使用url编码,再使用GET传入,得到flag。
无一幸免
打开链接得到PHP代码,分析代码。
分析这是一个永真式,给0任意赋个值即可。
传说之下(雾)
打开链接使用F12进入控制台,得到提示。
查看调试器,寻找有关分数的变量。
进入控制台输入Game.score=2077,开始游戏,吃一个果子,得到flag。
遍地飘零
打开链接,得到一段PHP代码。
对PHP代码进行分析。
foreach($arry as $key => $value){}的作用是将数组arry的键值分离,$key为键,$value为值。
var_dump()函数作用是打印出变量的类型、长度和值。
代码中进行了$flag的判断,证明存在$flag,代码中只有var_dump()可以输出,则使$_GET=$flag可以得到flag。
令_GET=a,则有:$key=_GET,$value=a,有:$$key=$_GET=$$value=$a,可知使用GET传入_GET=flag可以得到flag。
茶歇区
打开链接,使用F12打开元素区,查看传入时使用的变量名。
根据页面中提示是分数达到预计值得到flag,通过HackBar进行POST传值,在传值之前先将submit的值使用url编码。
注意:原理是使用了POST传值后计算溢出,这里需要传入两次,第一次传入后溢出为负数,第二次再通过溢出得到正数。
CRYPTO
密码签到
得到密文观察,直接使用hex解码得到flag。
Caesar
根据题目名直接使用凯撒解密,得到明文后使用ctfshow{}格式包裹。
0x36d
观察密文这是emoji加密,提示信息知道密码为题目名,直接在线解密得到flag。
类型-7
通过题目名提示,将密文使用Type7加密,得到flag。
g4的密码小课堂
解压得到py文件,使用pycharm打开。
分析代码:p1和p2接近,q1和q2接近,则p1q1与p2q2接近,p1q2与p2q1接近。
使用费马质因子分解,计算出p1q1、p2q2、p1q2、p2q1,从而求出p1、p2、q1、q2。
Base47
根据题目名和所给题目信息,判断使用进制计算,类似二进制转十进制。使用脚本进制转换得到flag。
@bash
根据题目名提示,密文使用了Atbash(埃特巴什码)加密,使用脚本直接解密,再使用ctfshow{}格式包裹。
This is Sparta
根据题目名提示使用了栅栏密码(sparta就是栅栏密码),直接使用栅栏解密得到flag。
注意:使用文本文中的密文,网页上的密文少了二个空格。
OSINT
碧海蓝天
解压文件,得到一张海景图和题目描述文本,直接使用百度识图,找到最接近的图片,分析出城市和景点。再使用ctfshow{}格式包裹。
我滴家乡
解压得到的图片直接去百度识图,确定地理位置,使用百度地图查看附近景点,之后使用ctfshow{}格式包裹。
J某的行踪1
解压后得到两张图片,一张图片放大后看到有提示,去百度搜索。
通过比对找到最合适的,使用ctfshow{}格式包裹。
J某的行踪2
解压得到一张图片,直接百度识图,找到一张相似且有提示的照片,根据解压图片上的提示和找到的提示进行百度搜索。
根据信息进行ctfshow{}格式包裹,得到flag。
J某的行踪3
解压得到图片使用百度识图,找到相似的图片,再通过图片来源找到信息,最后使用ctfshow{}格式包裹得到flag。
J某的行踪4
解压得到图片进行百度识图,通过图片来源找到信息,再使用ctfshow{}格式包裹得到flag。
J某的行踪5
解压得到一张图片,使用百度识图,得到一张有提示的图片,进行搜索,在使用ctfshow{}格式包裹得到flag。
J某的行踪8
解压得到图片后,根据图片上的细节进行谷歌搜索。
将搜索到的信息根据要求使用ctfshow{}格式包裹得到flag。
J某的行踪9
解压拿到图后使用百度识图,得到一张相似且有提示的图。
根据提示的店名去百度地图搜索,根据茶名去搜索饮品名,得到信息后使用ctfshow{}格式包裹得到flag。
零碎的记忆1
将解压出来的图片截取部分百度识图,根据图片来源找到位置信息,再使用ctfshow{}格式包裹得到flag。
零碎的记忆2
将解压出来的图使用百度识图,通过图片来源找到大致位置,再通过百度地图搜索到具体位置,最后使用ctfshow{}格式包裹得到flag。
J某的过往1
解压的图片中的水印提示进行搜索,可以找到原图,评论中有拍摄位置,再到百度地图进行搜索可以得到详细地址,使用ctfshow{}格式包裹得到flag。
J某的过往2
将解压的图片进行百度识图,根据图片位置使用百度地图进行详细搜索,再使用ctfshow{}格式包裹得到flag。