SICTF#3 wp及复现
又被暴打了QAQ
RE
baby_c++
判断的地方找数组即可
1 | from prism import * |
ez_pyc
分析逻辑可知,是求解一个数独,同时只要求其中的一个解
尝试放到网上直接求解,直接出来了
1 | 2548656723194376198518245679931748649825721856943342156965374812 |
这里我把输入改成十进制了
之后更新一个碰撞md5的方法
Sweet_Tofu
动调直接找检查数组,判断时要异或0x66
1 | from prism import * |
artbreaker
ida打开后发现不能反编译也不能看流程,修改最大节点数量然后跳到流程图
结果
居然用流程图把flag画出来了,看未定义变量的wp,说是用了**Artfuscator**这个来画的画
1 | flag{Rabbit_falls_into_rabbit_hole} |
BattleCity
游戏题,看样子是要通关,在assets中可以看到levels.ldtk文件,用文本文件编辑器打开可以发现里面有各种东西的属性,于是我把每一关的敌人只留了一个,然后把基地的长宽改成0,打完4关,assets里出现了win.png,是二维码,扫码就出来了
closeme
提示是要用正常方式结束程序
由于程序一直弹出窗口,因此需要通过messagebox函数的交叉引用找到主函数。或者通过动态调试找到位置。
然后动调分析一下,发现是一个循环+一些东西,要结束的话只能先break,在205行有唯一的break。同时后面有一个goto,让执行流又回到label_4了,这就
(看了wp)发现下面有一个xor加密的hint,解密得到
1 | from prism import * |
那么根据上面的break,可以看出需要输入16次
但是要检测到按键按的是哪个
根据messageboxW:yes是6,no是7。查找后可以发现
1 | if ( v2 == 5 * (v2 / 5) ) |
修正this_choose_ans的值,是==1,否==0,最后存在save_place中
1 | sp0 = *(unsigned __int8 *)save_place; |
经过这里后label_4会到第一个while(1)的位置最后,那只能继续分析final,它储存了所有输入内容计算后的最终值,由于先输入sp0,然后1。。。说明高位后输入,低位先输入
1 | if ( (unsigned __int8)sub_14001F580(&final, &zero) ) |
并且由于提示的按一定方式点击,说明肯定有检测的存在
在label_3的位置:
1 | if ( (what & 0xFFFF0000) != -1443823616 ) |
只要等于就可以往后走
反异或一下what的值等于1443758080/560E 0000
动态调试,输入测试,发现sp0到15就是放入的值1010101,唯一奇怪的是sp13和sp11是特定的值0x800和0x90000000
继续看what的生成看不出来,试试代数据
1 | 1111 1111 0000 0000 》 1111 1111 0000 0000 0000 0000 |
根据第一组数据感觉是倒序排入,上面final也是倒序的。倒序一下
1 | 0000 0000 1111 1111 》 1111 1111 0000 0000 0000 0000 |
第四个看得很明显如果不看后4位是最后两个变到了前面
试一试最后的what是不是这样变的
1 | 560e0000: |
不对?重新看了一遍发现是与运算,不是异或,那就是说最后的A9F1就是结果的末值
1 | 1010 1001 1111 0001 |
这道题告诉我看到这种抽象的题要多调试,静下来分析QAQ
virus-nlys1s[待补充]
居然是病毒样本,没玩过,之后再说
CRYPTO
vigenere
从名字可以看出是维吉尼亚密码
第二段可以明显看出有一段是SICTF{},进入
https://www.dcode.fr/vigenere-cipher这个网站,输入密文和已知的明文
得key:SAATF和明文
SuperbRSA
这个是变体的共模攻击
通过e1,e2求gcd,最后的结果要取gcd的根
1 | from gmpy2 import * |
easyLattice[待补充]
感觉在考逆元和模的基本运算?但是没做出来悲伤。
翻wp发现是考格密码,按照VSCode配置sage教程 不用notebook直接运行+代码高亮+命令行输出_sage windows-CSDN博客安装好环境,(最后失败了,于是把库全放到自带的解释器里面)
没见过呀(TVT),看不懂,之后再说
1 | #sage |
大概是说
$$
h = (f^{-1}g) \mod p
$$
$$
g = fh+kp
$$
$$
\begin{pmatrix}
f & k \
\end{pmatrix}
\times
\begin{pmatrix}
1 & h \
0 & p
\end{pmatrix}
\begin{pmatrix}
f & g \
\end{pmatrix}
$$
gggcd[待补充]
这个第一次见到诶,好怪:同e,n不同m,$m_2=f(m_1)$
m2是m1的线性变换
然后已知c1,c2,n,e
查了查,原来这个叫相关消息攻击
通过求可能的g再求其gcd(g1,g2)得到m
看大佬们的wp,exp都是用sage写的,我安装好后也不能导入python,但是直接用sage自带的好像可以,不过不能导入Crypto.Util.number,我就先解出m再longtobytes
1 | ....: c2 = 205635624489021368248826364689528951802539834493392269547383991633413 |
1 | print(long_to_bytes(11658736990073968144116409270602503966776095409763057826884617698882016691134900406351481309826095854973)) |
签到,确信![待补充]
我不解,但我大受震撼
铜匠[待补充]
似乎这个是已知p的高位
但是转5进制之后似乎不能准确表示p的高位,难度是把n转5进制?
1 | from Crypto.Util.number import * |
babyRSA[待补充]
easy_or_baby_RSA[待补充]
2024_New_Setback[待补充]
MISC
签到
略
geekchallenge
这个要连接一个地址,连接后是一个猜数字游戏,114位,一共5种字符,一开始尝试了很久不知道为什么错了,最后发现它延迟一次显示,上一次的结果出现在下一次在,那么解
1 | import socket |
New_year`s regret
给了一个压缩包,有秘密,但是说了格式:xxxxSICTF
那就掩码爆破:格式是????SICTF
出来是2024SICTF
解压压缩包得到一个task.png和output.txt,同时压缩包注释表示压缩包有额外数据,用010editor查看得:43637d135333
task.png是400x400的类似二维码的黑白图像,一行25个格
output.txt是一堆0101二进制串,22464个字符加一个换行符
那么很有可能要把output转为图片,但是并不知道要怎么转换。
然后这里的额外数据43637d135333实在想不出来是什么意思,看wp后才知道要反转之后from hex:351×64刚好22464
1 | from PIL import Image |
得到一张五线谱,这个叫Music Sheet Cipher
通过网站:Music Sheet Cipher - Online Notes Decoder, Encoder, Translator (dcode.fr)
来解码
得到:PUTITALLTOGETHER/put_it_all_together
以zip形式打开task.png
发现有base64编码的字符,解码后好像还是base64,多试几次,最后发现35次的时候有PNG的标志,37次就不能继续了,把它输出成png,是一个二维码,扫码然后获得部分flag
1 | import base64 |
1 | SICTF{Congratuation_to_you! |
再查看task.png,二进制打开看有没有什么标志,除了50 4B 03 04还有一个PNG,复制PNG保存打开是一张武器表,根据提示:你知道这是几星吗想到要找武器星级
1 | 44664654464566654465645644544664654654644546445446646565444454544664654664544545646454544454466465465645644 |
结果是如上。四五六有三种变化,猜莫斯密码
1 | ..--.- ..-. --- ..- -. -.. ..--.- .- .-.. .-.. ..--.- - .... . ..--.- .--. .. . -.-. . ... ..--.- .- -. -.. |
1 | _FOUND_ALL_THE_PIECES_AND |
拼接flag
1 | SICTF{Congratulation_to_you!_found_all_the_pieces_and_put_it_all_together} |
WHOWHOWHO
又是有密码的压缩包,但是有提示:6位数小写密码,爆破:qweqwe
二号位置有空白字符,很明显是0宽隐写,网上找工具解密
1 | U2FsdGVkX19uvldJ6CGUNff3B28QEdIjZqgUh98K+/0J16ELU8WVQydohw4P5+2M |
base64,有三行,直接解密,解完发现是乱码,但是一开头说salted,加盐了
上网查时发现rabbit加密开头一定是U2FsdGVkX1,base64之后就是salted_所以尝试用这个解密,需要key才可以,根据txt文件中的谁是渣男,尝试:shumu
成功
1 | GTAGAGCTAGTCCTT{GGGTCACGGTTC_GGGTCACGGTTC_GAACGGTTC_GTAGTG_GCTTCA_GTAGACGTGGCGGTG_GTAGACTCA_TATGACCGG_GCTCGGGCT} |
这个是dna加密,好像没有直接解密的,但是有脚本
1 | mapping = { |
日志分析1
使用了windows自带的evtx浏览器和logparser
尝试查找注册或者登录:id4779
找到
1 | 日志分析1.evtx 1600 2020-07-22 10:52:19 2020-07-22 10:52:19 4779 8 Success Audit event 12551 The name for category 12551 in Source "Microsoft-Windows-Security-Auditing" cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer Microsoft-Windows-Security-Auditing attack$|ADOFLMB|0x12a334|RDP-Tcp#0|kali|192.168.222.200 WIN-WH8G5MDPHE5.ADoflmb.com NULL The description for Event ID 4779 in Source "Microsoft-Windows-Security-Auditing" cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer NULL |
这里找到attack$的用户名,ADOFLMB的用户域,下面的192.168.222.200是内网登录的ip,然后查找创建计划任务的id:
得到任务名称\callback,文件路径c:\windows\system32\windows_attack.exe
锁定这一天寻找其它内容就能找到就能找到用户组是Administrators
远程登录账户是WIN-WH8G5MDPHE5$
1 | SICTF{192.168.222.200|attack$|Administrators|\callback|c:\windows\system32\windows_attack.exe|ADOFLMB\WIN-WH8G5MDPHE5$} |
但是不对,结果远程登录账户就是attack$
在4769号内容2020/7/22/10:52:06
1 | 已请求 Kerberos 服务票证。 |
第一行得到目标账户名,这个事件是生成凭证以访问资源的所以没问题?
1 | SICTF{192.168.222.200|attack$|Administrators|\callback|c:\windows\system32\windows_attack.exe|ADOFLMB\attack$} |
然而,任务名不加\,这个\表示它位于任务计划程序的根目录下,所以正确flag是
1 | SICTF{192.168.222.200|attack$|Administrators|callback|c:\windows\system32\windows_attack.exe|ADOFLMB\attack$} |
(所以说$表示隐藏为什么要加QAQ)
日志分析2[待补充]
神秘的流量[待补充]
FORENSICS
明明是社工却叫取证?
OSINT签到
直接放到谷歌识图,得出答案
红城湖公园位于海南省海口琼山区府城街道红城湖路北侧
1 | SICTF{海南省_海口市_琼山区_红城湖公园} |
这才是签到
谷歌识图得出地点是意大利的威尼斯,图片中是一个酒店,但是提示说不酒店,拍摄地点找没有空格的好像找不出来?
看对话jpg,是说穿过小巷,感觉很多啊。奇怪诶。
好吧,看了wp发现没有特殊字符是省略空格就可以,那拍摄地点是Gondola Danieli
穿过小道,我之前一直理解成往左边走,结果是往右??
不过提示了比例尺是20m,穷举也是可以的
1 | SICTF{意大利_威尼斯_GondolaDanieli_ChiesadiSanZaccaria} |
真的签到
显眼的是摩天轮
谷歌识图找到地点
1 | SICTF{广东省_珠海市_斗门区_大信新都汇} |
树木的压迫
百度识图只搜索红框部分
1 | SICTF{四川省_达州市_通川区_凤凰大道376号_达州市体育中心} |
签退
根据左下角车是右舵,去网上搜索地区
采用右舵,靠左行驶的国家主要是英联邦国家,也就是原来受英国的影响比较大的国家,较大的国家有英国、日本、印度、澳大利亚、南非,等三十多个国家和地区。
具体都包括:孟加拉、不丹、文莱、东帝汶、印度、印度尼西亚、日本、马来西亚、马尔代夫、尼泊尔、巴基斯坦、新加坡、斯里兰卡、泰国、中国香港地区和澳门地区、爱尔兰、塞浦路斯、马耳他、英国、博茨瓦纳、肯尼亚、莱索托、马拉维、毛里求斯、莫桑比克、纳米比亚、塞舌尔、南非、斯威士兰、坦桑尼亚、乌干达、赞比亚、津巴布韦、安提瓜和巴布达、巴哈马、巴巴多斯、格林纳达、圭亚那、牙买加、圣基茨和尼维斯、圣卢西亚、圣文森特和格林纳丁斯、苏里南、特立尼达和多巴哥、澳大利亚、斐济、基里巴斯、新西兰、巴布亚新几内亚、所罗门群岛、汤加、图瓦卢。
通过直接搜图,发现一个视频【超清南非】第一视角 开车从开普敦机场高速前往市中心 (1080P高清版) 2022.2_哔哩哔哩_bilibili
其中红绿灯一样,建筑也差不多,就猜是开普敦了
同时裁剪图片搜索右上角建筑,可以发现中间被涂掉的蜘蛛侠。那么地点就是这里了。
根据这个图片继续查找,发现这个建筑的另一边
得到附近地址
strand street
全景地图观察发现就是这里
1 | SICTF{南非\_开普敦\_StrandSt_STEERS} |