TSCTF-J2024 Immey's write up
一、Web
1.set set what
F12 修改进度条的最大值为出题人QQ号即可获得flag
(做个签到就跑)
二、Reverse
1.iPlayIDA
打开文件发现是换表base64
先求出新的Base64表
v1 = [ |
后放入CyberChef即可得到flag
2.iPlayPython
先用pydumpck反编译exe文件
随后发现文件夹里没有py文件(一开始以为是出bug了,没想到是只能反汇编)遂改用反编译pyc文件
补全pyc文件头后用pycdc发现反编译不完全
于是上网查资料发现还能反汇编,编写反汇编脚本后得到汇编代码
import dis |
得到一长串汇编代码,翻译成python代码
m = input() |
可以写出解题脚本
|
3.iPlayPinball
打开附件发现是一个unity编写的游戏,要求达到810975分才算过关
第一想法是用cheat engine修改分数,但是失败了,看到hint后尝试unity逆向
把Assembly-CSharp.dll放入Dnspy后可以清楚看到游戏逻辑,其中DisplayWinMessage是Flag所在部分,使用的是Z3,直接把他单独提出来稍微修改一下运行,可以得到Flag
using System; |
4.iPlayApple
查了好久都没找到windows下逆向ipa文件的方法,遂放弃:(
5.iPlayCalc
首先用die查壳,发现是upx魔改壳,于是用010editor打开发现是修改了标志位,把标志位修改回来便能够正常脱壳
脱壳后用IDA打开,结合hint给出的提示“shellcode加载器”,开始着手分析shellcode的内容,将shellcode经过Base64解码后写入.bin文件
hex_string = "e98b020000cccccccccccccccccccccc33c064a1300000008b400c8b400c8b308b368bc68b4018c3cccccccccccccccc558bec83ec3cc645c447c645c565c645c674c645c750c645c872c645c96fc645ca63c645cb41c645cc64c645cd64c645ce72c645cf65c645d073c645d173c645d200c745ec000000008b45088945e88b4de88b550803513c8955e48b45e483c0188945e0b9080000006bd1008b45e08b4d08034c1060894df08b55f08b450803421c8945d48b4df08b55080351248955d88b45f08b4d08034820894ddcc745fc000000008d55c48955f4c745f800000000eb098b45f883c0018945f88b4df08b55f83b511873708b45f88b4ddc8b55080314818955fc8b45fc0fbe0885c974248b55fc0fbe028b4df40fbe113bc275148b45fc83c0018945fc8b4df483c101894df4ebd28b55fc0fbe028b4df40fbe113bc275188b45f88b4dd80fb714418b45d48b4d08030c90894deceb0b8d55c48955f4e97cffffff8b45ec8be55dc3cccc558bec83ec30e895feffff50e8affeffff83c4048b4d0889410cc645d04cc645d16fc645d261c645d364c645d44cc645d569c645d662c645d772c645d861c645d972c645da79c645db41c645dc008d55d052e849feffff508b45088b480cffd18b55088902c645ec6dc645ed73c645ee76c645ef63c645f072c645f174c645f22ec645f364c645f46cc645f56cc645f600c645f873c645f979c645fa73c645fb74c645fc65c645fd6dc645fe008d45f8508d4dec518b55088b02ffd0508b4d088b510cffd28b4d08894104c645e043c645e172c645e265c645e361c645e474c645e546c645e669c645e76cc645e865c645e941c645ea008d55e052e8a0fdffff508b45088b480cffd18b55088942088be55dc3cccccccccccccccccccccccccc558bec83ec68c645b420c645b520c645b620c645b720c645b820c645b920c645ba20c645bb20c645bc20c645bd20c645be20c645bf20c645c020c645c120c645c220c645c320c645c420c645c520c645c620c645c720c645c820c645c920c645ca20c645cb20c645cc20c645cd20c645ce20c645cf00c645984dc645994ac6459a4ec6459b4dc6459c57c6459d2dc6459e49c6459f7bc645a043c645a168c645a26dc645a333c645a45fc645a54ec645a630c645a770c645a867c645a96ac645aa74c645ab5fc645ac51c645ad74c645ae6ac645af31c645b07ac645b175c645b27dc645b300c745f403000000c745f007000000c745ec01000000c745fc00000000eb098b45fc83c0018945fc837dfc1c0f8d990000008b4dfc0fbe540db483fa617c3d8b45fc0fbe4c05b483f97a7f308b55fc0fbe4415b483e8618945f88b45f80faf45f40345f099b91a000000f7f98955f88b55f883c2618b45fc885405b48b4dfc0fbe540db483fa417c3d8b45fc0fbe4c05b483f95a7f308b55fc0fbe4415b483e8418945f88b45f80faf45f40345f099b91a000000f7f98955f88b55f883c2418b45fc885405b4e954ffffffc745fc00000000eb098b4dfc83c101894dfc837dfc1c7d1f8b55fc0fbe4415b48b4dfc0fbe540d983bc27409c745ec00000000eb02ebd2837dec007537c645e063c645e161c645e26cc645e363c645e42ec645e565c645e678c645e765c645e8008d45d050e8c6fcffff83c4048d4de051ff55d48be55dc3cccccccccccccccc" |
再把他使用IDA打开(一开始尝试好久都是空白,后面才知道是处理器类型的区别,涨知识了)得到伪代码
一眼找到有flag特征的伪代码,分析伪代码可以写出exp
def decrypt_flag(): |
6.iPlayTarot
发现是C#编写的,用Dnspy打开,定位到几个关键函数,发现EncrypClass函数好像是类似RC4的加密,但是一直分析不明白CheckClass的逻辑,以及到底和日麻有啥关系,遂放弃(现在开始打雀魂来得及吗XD)
7.iPlayBingo
提取到wasm文件后,成功使用wabt将其处理成为了.c和.h文件,但是在编译成为IDA可分析的.o文件时报错了,并且前面的题还没做出来,遂放弃
8.iPlayMaze
好狠的迷宫题TAT,比moe的迷宫难好多,简单分析了一下TLS函数和去除花指令后就放弃了(SMC和反调试的处理还不是很熟练)
9.iPlayDuolingo
没有尝试
三、后记
很开始能够参加这次新生赛,虽然感受到了头脑风暴的感觉,但是很开心在做题的过程中学到了很多东西,非常感谢出题人的指导!这次新生赛对我来说也肯定是一段难忘的经历,很不幸在比赛刚开始的中午发现自己莫名奇妙阳了(关键时候掉链子),顶着发烧刀片嗓和虚冷在做题(但是周六在布洛芬的帮助下还是被硬控在床上到下午四点XD)最后,还是希望自己能够进入战队,向学长学姐们多多学习(挂哥简直是我心目中的逆向大神,太强了)