type
status
date
slug
summary
tags
category
icon
password
怎么说呢,还是打了一个月,队友给力冲到了第一,还是把自己做出来过的题写一写,不然有点浪费的意思
聪明的信使
逻辑清晰,密文已知,加密只有encrypt函数
exp:
喵喵喵的flag碎了一地
main函数给我提示去获得flag
第三段让我找交叉引用
你真的是大学生吗?
没有找到其他方法,硬读汇编
start是获取input,对其加密(发生在loc_1007c),通过将每一个字节与后一个字节进行异或运算来加密
DebugMe
只告诉要动态调试,回显“flag呢”
添加debug
找到包名
找到类名
进行adb调试
jeb运行到调试结束处,得到flag
trustme
MainActivity告诉了用户名的计算
这里有藏着真正的方法路径
提shell.apk大概有两种思路:
- MT管理器找
- 连上手机,adb pull出来(没有测试机所以没搞)
数据是放在数据库的,直接找
安装下来,丢进jadx分析,找到真正的“密文”
这里的意思是密码和flag数据在database数据库里,账号密码输入正确则回显flag出来
有两种解法:
(一)连接手机,利用"SELECT password FROM User WHERE username = 'flag'"frida提出flag
(二)MT管理器直接找
下面的方法有提供找数据库的路径,直接MT管理器一把梭:
同时也得到密码:qweradmin
ez_cube
魔方题,先找线索:(每一面的数字代表每一块颜色)
进行魔方打乱:
蓝色(2)面第一排第二个变成红色
红色(1)面第一排第二个变成绿色
绿色(3)面第一排第二个变成蓝色
分析RUru步骤:
cmp函数是验证是否复原,以及复原步骤是否<=12
拿魔方手操:RuRURURuruRR
今夕是何年
这道题没什么难点,就是先认出是龙芯架构下运行的文件,用qemu配置龙芯系统
用die查了是ELF文件,然后ubuntu运行,配置好了跑就出
baby unity
不一样的unity引擎,正常是moon架构,找得到Assembly-Csharp直接逆,这题是il2cpp架构,根据提示
跟着说明里面提到的命令行操作,but dump失败
发现三个dll文件都有upx壳,将GameAssembly.dll脱壳
直接使用下载好的工具里面的Il2CppDumper.exe打开
在下载的题目的路径里面依次选中GameAssembly.dll以及"\baby unity_Data\il2cpp_data\Metadata\global-metadata.dat"
dump出Dummydll文件和output文件
使用dnspy打开Dummydll / Assembly-Csharp
找到关键函数名称
IDA打开GameAssembly.dll
使用script file 导入文件,导入工具里的ida_py3 和 output的script.json
找到对应的两个函数,分析
其实只进行了这两段加密
exp:
ez_rand
v4是种子,srand函数和rand函数根据种子来生成随机数,input加密逻辑使用v7
那么首先想到的是爆破种子,来推flag
再看v4,unsigned __int16 v4无符号16位整数型,v4范围为0~2**16-1(65535),结合flag固定格式XYCTF{}
exp:
何须相思煮余年
打开是一堆十六进制数据和cipher
写个脚本将十六进制数据转化为二进制数据,然后写入二进制文件
再将输出的文件丢进IDA
得到汇编指令
这里的call和下面的call的地址一眼假,当作花指令nop掉
u、p操作复原函数
加密逻辑清晰
exp:
砸核桃
北斗兄弟3.X壳,网上找文章[原创]NsPack 3.7 浅析 (7.3更新脱壳机和源码)-加壳脱壳-看雪-安全社区|安全招聘|kanxue.com
下载对应工具后
IDA打开:
提取cipher和byte_402130
exp:
ez_enc
根据分析进行修改,得到以上内容,前几个printf打印德国骨科相关内容,真正的加密只有第一个for循环
因为不好逆,所以采用正向爆破,但是这里有一定特殊性,爆破后的数据一定在0~19范围内。为了得到正确的flag,将cipher的值+20的倍数进行计算,对应爆破的flag数据也对应+20的倍数,得到正确合理数据为止
exp:
再对爆破出的数据处理
ezmath
python解释器编译的exe文件,解包出pyc,再反编译成py文件
多元一次方程,z3脚本一把梭
整理得到flag
给阿姨倒一杯卡布奇诺
tea加密,多了一点异或,直接搓解密
what's this
DIE查询发现是lua编译的,网上搜lua在线反编译得到源码
一千多行代码,实际有用的只有最后那段
使用XOR函数将字符与数字8进行异或操作,再加上3,base64加密,再进行字符替换
直接逆向逻辑,exp:
馒头
哈夫曼树学习参考:哈夫曼树编码的实现+图解(含全部代码)-CSDN博客
直接再check_flag里找到密文,里面包含了最终哈夫曼树的部分检测点以及data
这里使用sorted函数排列一遍,可以发现data从1~24完整,那么,我们可以根据ans1的数据,画出哈夫曼树来解决
为了方便,可以简单处理下数据:
我们可以根据分析粗略得到部分flag数据,继续画出完整哈夫曼树:
手撕,整理一下得到flag:
easy language
可以看到右下角有明显的图标
然后就没找到啥逆向逻辑了,全是脑洞,想了好久
这里找到四个数据,长度分别为44、16、64、16
数据长度结合
猜测是标准AES-ECB加密
shift+F12,第一个内容就像是在暗示base64加密
那么解密就是先进行base64解密,再AES-ECB解密
舔狗四部曲-简爱
一眼过去应该是tea和howtolove函数有用,分析逻辑可以知道,两个tea分别对input和cipher进行同样的加密,所以无意义
锁定howtolove函数,有opcode那味儿,仿照vm思路来写,打出操作步骤
打印出来直接逆
exp:
最后有个字节错了,脑洞一下就OK了
舔狗四部曲-相逢已是上上签
.exe文件用DIE扫出来是MODOS文件,丢进010editor看看
e_lfanew段有明显的问题,未找到正确pe头位置
改掉,此时可以看的DIE扫出来是32PE文件
上面的key可以用z3求解
魔改的xxtea加密,先手动复刻一遍加密逻辑
舔狗四部曲-我的白月光
点击运行得到第一段flag:flag{L0v3_ ,并告诉还有两段flag
IDA找到main,前面全是winapi触发messagebox,触发弹框
最后这段明显感觉是base64解密,直接解发现是错的,点进base64看
原来是魔改的base64,把3 * 8改成了4 * 6拆分
修改base64解密得到
与第一段连不上,拿到的应该是第三段flag
V11本来是VirtualProtect的messagebox,在这里hook了sub_7FF6B44B1470函数
在里面发现了messageboxW以及一段疑似加密逻辑:
原始数据在上面v11数组那里,为了方便,动调+IDApython打出内容
得到第二段flag
- 作者:Sh4d0w
- 链接:https://sh4d0w.life//article/3d929df3-c15e-4ef3-8887-2d5d5b63fce2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。