2024SWPUctf-wp

逆向

01 Just reverse

拖入即可

Over

02 ^-^

拖入

静态分析,将输入加密与Str2对比,加密函数为xor那堆

进入分析写解密

Over

03 代号:破壳行动

从upx文件夹里打开cmd,并脱壳

拖入IDA分析

静态分析,发现v11是输入,并将v11的每一位与0x78异或,然后与unk_140003078比较,故写出解密

Over

04 ELF

拖进去

静态分析,flag为输入,encode作为中间生成的,最终与encode相比,里面唯一未知数为result,并且要注意,encode与enflag为四字节int,flag为一字节,开启虚拟机动调获得enflag这里我用了一个小技巧

在执行第二轮时先将enflag的值转换为十进制数,并且我猜到第二位字母为l(wllm)所以encode[2]=flag[2]*flag[2]的时候我知道此时的encode[2]

随后encode[2]+i*result*flag[2]+i*i=enflag[2]

enflag[2]=11881,encode=11664,于是列出11664+1*result*108(’l’)=11881

解出result=2

然后爆破

Over(wllmctf{load-elf_load-elf_please-load-elf_thanks_miao})

05 xianyuuuan's maze

拖入ida

静态分析,猜测迷宫是unk_403040,并且发现v6是一个[9][9]的格式所以要基本可以确定

是一张9x9的地图,直接写代码打印出来

然后走迷宫再根据题目提示,将得出的字母进行MD5解密

Over

06 broken_flag

拖入ida

根据提示,一部分在shift+F12中

二部分在函数名中,但发现这里并没有于是看向附件,附件类型为pdb格式,是程序调试时生成的文件,里面含有很多函数名等,将附件拖入ida,通过字符串查找

三部分在字符串查找中

然后进行ctlrl+x不断往回走就行

四部分,直接tab看汇编,往下找就在下面

当然也可以通过patch的方式

Over

07 hua

拖入ida

先静态加调试分析一下,v6是输入的数,经过三个加密,点开if里的对比函数

最后与那个对比,接下来分析加密

第一个问题是永真,解决就是豆删辣,对call使用“d”,三联ctrl+n

P一下看代码

第二个

这个xrelease有问题,在我多次尝试后,我突然觉得是不是这两个其实本来是连在一起的,是同一个函数,实践一下,先把xlease“d“掉

这段明显没啥用,删了试试

再去个标红,P一下

有了,第三段

其实这里有xor eax,eax 所以本身就是jz零跳,jnz没啥意义,再加上跳过了一个函数,一块删掉

P一下

最后一步写解密

Over

08 与恋结缘

是个apk,拖入jadx

分析,应该是用户名obj,密码obj2,先把obj与13代入到“Gaius.encrypt“这个里头看看

后面是与那个字符串对比,在resourse里找到check_user“76B8Bz11j“,写个解密,得到需要输入的用户名为76O8Om11w,然后看obj2

观察发现是,先把obj2变成int类型,再进行xtea.encrypt加密,最后在变成char类型与bbb对比,看看加密

Ok,是xtea,可以解密了

得到密码,84a54e96b731f43c,其实看代码可以知道是把obj和obj2放一起,进行一次md5加密,就是答案,但是还是可以手机运行一下,让文件直接出答案(有点社死)这道题就这样了

Over

09 超级网盟娘

这个算是我第一次接触游戏逆向,unity逆向,需要工具dnSpy

用dnSpy打开超级网盟娘文件里的

这个,然后一般游戏代码在

这个里,看看代码

这里是说,跳跃和死亡有关的,我当时把跳跃那个触发的复制到下面了哈哈哈,好像死亡条件被我删了

还有这个是控制跳跃什么的,最后一个if是跳跃有关的,其中第一个条件是说,碰到地才可以跳,我直接删掉,于是无线跳+不死就诞生了,最后保存到原位,启动

Over

010 哇袄

拖入ida

输入之后经过简单加密,与flag对比,写解密(第一次我错了,后来发现,这个flag在程序开始后,会变化的,所以应该先调试,之后用调试时的flag,写解密)如下

Over

011 下午茶派对

拖入ida

大概是先输入一个input,input进行chacha20加密,然后与v28对比得出第一段flag,在输入第二个v24,通过tea加密,与v8对比先看第一个chacha20

看样子是异或,而且这个加密仅仅异或,v12很难看到,但是异或的逆向就是异或,所以猜测这个会是个对称加密,用插件pathdata将

Path之后看看加密后enput

第一段就有了,看看第二段

写出解码

运行即可

Over

012 python:我想成为C

是python逆向,先下工具,把.exe文件拖进工具文件夹里,然后在工具文件夹中打开cmd,输入python pyinstxtractor.py 文件路径,即可获得.pyc文件

在网上可以找一个在线python逆向网站,拖入即可逆向

分析python发现是rc4解密,rc4是对称解密,所以只需要在原基础上稍作改动即可,如下解密

运行即可

Over

013 脱壳行动2

64位,upx壳

魔改壳,用010看一下壳的二进制文件

把这四个改成UPX,在尝试脱壳

脱掉了,ida看代码

SMC一般伴随着VirtualProtect函数出现,看一下这个lpAddress,有点可疑,经过复制,将code复制给,lpAddress,在经过dec函数,看看dec

看起来是把lpAddress也就是code经过异或解密,然后恢复,所以可以构建一个idapython来解密,进行静态分析,或者用动调来分析都可以,这里我选择idapython

Code段起始为0x403080,终止为0x40311F可以写出脚本

Run之后用c转换为代码形式,在按p转换为函数形式,看看代码

有了,大概意思是先用,a2^i创造一个s盒,把输入进来的数,用s盒里对应的字符重新编码,解码思路还是先创造一个一样的s盒,在根据s盒里的字符找到对应是几,写出解密

Over

014 basebase

运行一下

只有当程序开始移动时,base64的真正本质才会显露出来……

只有当羔羊被狼追赶时,它才会说出真正的密码(动调)

拖入ida

输入在buffer里,经过base64加密,与expected对比,但打开expect发现

是这样的,其实就是expected的值是地址,指向的地址才是代表的值

换成dd格式,就有地址了(其实也可以看灰色字)cHgod08od08gak80Y3w4W3Igd3V3MBBB

动调看看base64表变没变

可以看到这里把base64表变了

BADCFEHGJILKNMPORQTSVUXWZYbadcfehgjilknmporqtsvuxwzy1032547698/+

这个是变之后的表,找在线网站变表解码(当然也可以直接敲代码解)

得到flag{this_is_an_ugly_base64}

Over

015 一刀999

是个文件包,先打开看看有什么

一共就这么多先打开主页的那个浏览器图标

但似乎不能直接F12,通过工具-开发者工具打开

原来是又不让打开的代码,网上搜搜,关于这个的文章

试一下

好的可以了,然后发现

源代码似乎和文件夹里的一样,猜测是调用本地的js文件的网站,所以是不是可以通过修改本地文件实现改变网页,看名称猜测check与register最有关(注册与检查)

Check能正常看到代码但register感觉像是乱码

对了还有一个网站,点开看看


看来是提示,搜一搜js代码混淆,大概理解了什么是js混淆,所以就要知道怎么去混淆,找个在线网站

Online JavaScript beautifier

把register文件变成txt形式,把代码放进在线软件

有了,稍微看看

感觉有点像java,方法名可以通过前缀找到,所以看看common common用刚刚那个网站(美化)后,成这个样子,不过还是看不很懂,所以我觉得给ai帮帮我

差不多是这个要求,紧接着分析正否

通过判定success来判定是否成功,而success通过checkAccountAndPassword来判定,checkAccountAndPassword在check段中,所以接下来可以分析check了,不过我始终没用得到结果的是,似乎register.js反混淆再放回去后,F12后源代码就会消失register,不知道为什么

现在就是通过开发者模式的动调来进行分析

下断点,随便输一个密码和账号,进入

看到开发者这个界面的提示,t是账号,o是密码,对于账号的判定,是t+e(519)

单步进入e(519)

返回的是o[46]

也就是zsyyds,所以说这个判定就是c=账号+zsyyds是否为xianyuuuanzsyyds

所以账号应该是,xianyuuuan

在进入下一个

这个形式有点像之前做过的RC4,并且传入密码和xianyuuuanzsyyds,由此推测密匙是xianyuuuanzsyyds,

加密过后存在u中接着往下

这里第一行就是密文判定了,发现密文是e(491),单步进入看看

所以密文是M8/lqnKGGYrmjF/hn5BSaHwDKUIilKz2Bvg71ojm1Tc=,密文与经过函数后的n(密码)对比,所以单步进入,看看加密函数做了什么

这里发现传入三个参数,第一个是rc4加密后的密码,第二三个目前意义不明,接着看下去

这里是把t倒过来了,且这个btoa,是base64编码的作用,t+=后面是r[n]所以猜测是把密码base64加密了

在之后

这里进行的解密有提示,名字叫AES-CBC,再根据网上在线解码发现要三个参数,刚好对应,所以sdyysznauuuynaix是密钥,1234567812345678是iv,传输密码,加密

所以整理思路是,密码->RC4->base64->AES-CBC

关于AES-CBC的解码脚本我还没实现,所以使用的在线网站

解码脚本如下

最后运行得到flag

Over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值