Forensics
[签到]OSINT签到
识图直接得到结果
SICTF{海南省_海口市_琼山区_红城湖公园}
这才是签到
可以扫到拍摄点,目的地由对话可以知道要走过小道(有一说一这个小道很抽象)。找了半天是没有找到,后面看其他大佬爆破出来的地方,发现是自己找的小道有问题。
SICTF{意大利_威尼斯_GondolaDanieli_ChiesadiSanZaccaria}
树木的压迫
红框部分裁剪下来搜图可以得到关键词达州
查找达州体育馆得到flag
格式忘了,搜一下地址按照题目给的要求填
真的签到
关键点我认为是找到摩天轮,边缘白色折线 中间不会发光 ,从这个视频里可以找到是在珠海,搜索珠海摩天轮商场可以得到flag
SICTF{广东省_珠海市_斗门区_大信新都汇}
签退
爱莉✌搜的是墙上的蜘蛛侠得到地址,赛后试了下确实可以
我搜的是那个比较有标志性的门
得到地址,通过街景找到店铺,flag提交格式依旧抽象
SICTF{南非_开普敦_StrandSt_STEERS}
Misc
[签到]签到
扫码回复得到flag
真💨签到
010打开加密压缩包结尾有一串数字,直接再次导入010得到一串编码
TVTTTVTXABYUXTXTXCARYYXAZCYYYUXV=
一开始以为是base,但是提示说是文本加密字母,进行文本加密字母解密得到压缩包密码
解压出音频文件和一张图片,音频文件比较刺耳,放进audacity发现密码
一开始没注意到文件名是让把lagrange大写就没解出来,转化后密码为givemeyourLAGRANGE,用steghide提取,也可以用爱莉✌用的工具
但是这个脚本有个问题是路径还是不能有中文,比较局限。得到flag
SICTF{T3e_endless_Lagrange_is_really_fun!}
WHO?WHO?WHO
压缩包不是伪加密,一开始还没出hint1进行常规暴力破解得到密码
解压得到txt文件,一看包含了零宽隐写,我的过程比较冗杂了,是先放进了sublimetext里看隐写类型然后再去网站解码
后面看爱莉✌的wp发现之前经常用到的b神的工具里自带零宽的检查
得到一串字符
U2FsdGVkX19uvldJ6CGUNff3B28QEdIjZqgUh98K+/0J16ELU8WVQydohw4P5+2M
jbhTLQHNOpcoOd7kSRgy8pwpovCmimdD8M0IbYUeXjNKYePL/WP4PCMaOJHAW3HR
b7IEoDDH1NYh3o5NwMmcFEqy1ujf72VgQIQkaeYFFFE=
之前做过相似的,知道这个是Rabbit加密,密码当时hint2也没出,但是想到只有shumu是渣男这个文件名,就试了下,发现确实是,得到一串看起来和DNA有关的字符串
GTAGAGCTAGTCCTT{GGGTCACGGTTC_GGGTCACGGTTC_GAACGGTTC_GTAGTG_GCTTCA_GTAGACGTGGCGGTG_GTAGACTCA_TATGACCGG_GCTCGGGCT}
当时直接拿到随波逐流一把梭没有出来,拿SICTF{}的头子自己算规律手撕才出(羞死了)。这里放出手撕出来的密码表。当时想的是ST相近 AC相近,类比一个四进制,A是CGG开始,顺序为ACGT
把符号去掉其实可以再随波逐流里一把梭出来(悲),就,觉得自己挺呆的
得到flag
SICTF{Q1A0_Q1A0_GA0_SU_N1_SHUMU_SH1_ZHA_NAN}
复现题目
New Year's regret
根据题目提示进行掩码爆破得到压缩包密码
解压得到一个二维码和txt文本,先看txt文件发现全是01,先尝试二进制转文件,看了爱莉✌的wp发现b神的工具里还是有!
图片很多,挑了张比较清晰的来看,应该是音符解密
解码得到一半flag(感谢爱莉✌提供的网站!)
-PUTITALLTOGETHER
再看图片是个汉信码,但是识别出来没有信息,foremost分离出一个压缩包解压得到一个txt文件,进行base64循环爆破
第35次报错,将第34次得到的码转图片得到二维码,扫码得到前面一段flag
SICTF{Congratulation_to_you!
在foremost出的文件里还有一张图片,搜索出来是战双的武器,对照发现星级只有456三种,之前begin有道上岸学到摩斯密码是三向性,将得到的456字符串摩斯密码对应解密可以得到剩下的flag。
GeekChallenge
贴个爱莉✌的
from pwn import *
import string
HOST = 'yuanshen.life'
PORT = 00000
chars = string.printable
def guess_password():
s = remote(HOST, PORT)
server_greeting = s.recvuntil(b'>')
print("Server greeting:", server_greeting.decode())
pwd = ['0']*114
arrk = 0
for char in chars:
guess = char*114
s.sendline(guess.encode())
response = s.recvline().decode().strip()
if '1' in response:
arrk += 1
print(f"Character found: {char}")
print(f"Response: {response}")
for i in range(len(response)):
if response[i] == '1':
pwd[i] = char
server_greeting = s.recvuntil(b'>')
if arrk == 5:
break
pwd1 = "".join(pwd)
print(f"Final password: {pwd1}")
# s.interactive()
s.sendline(pwd1.encode())
flag = s.recvuntil(b'}').split(b'\n')[-1]
print('This is flag:\n', flag.decode())
s.close()
guess_password()
总结
因为这次比赛时间也属于长时间的,之前打了Begin还没缓过来,打了第一天全天看了下题就说不打了,但是后面晚上没事儿干的时候又没忍住打开比赛,除了日志分析(还没看)misc的题还是不难的,更多的是自己的畏难情绪。本次比赛也让我对工具的认知有了更加深刻的认识,自己也写了一个base64自动解码的脚本,以及对pwntool库有了更深的认识。