ISCC2022 writeup
Reverse
GetTheTable
下载附件,查个壳
64位程序无加壳
用IDA打开,反编译一下查看主函数伪代码
将str字符串拉去base58解码即可得到flag
Amy’s Code
下载附件,打开提示我们输入flag
先用PEID查个壳
可以看到是用C语言写的32位exe文件,没有加壳
将附件丢进IDA反编译
f5查看伪代码
源代码如下:
1 | int __cdecl main_0(int argc, const char **argv, const char **envp) |
简单分析一下源代码
sub_4115FF函数的作用是将flag中每一位字符和其相对应的位数进行异或。
sub_411433函数的作用是定义新列表v6和v9,将v6中的每一位字符和进行异或后的flag中的对应位的字符相加得到新列表v4,再和v9比较,相同则返回1,不同则返回0.
分析完毕,得到逆向思路:
先将v9和v6中的对应位相减,得到异或后的flag
由于异或是可逆的运算,所以将得到的flag再次异或就可以得到正确的flag
代码如下:
1 | #获取异或后的flag |
How_decode
老规矩 先查个壳
丢进IDA找到主函数反编译一下查看伪代码
简单分析一下源代码
发现是魔改过的XXTEA加密
加密过程如下
1 | int __cdecl main(int argc, const char **argv, const char **envp) |
IDA快捷键H可以把十进制数转为16进制!(关键)
解密脚本如下:
1 | from ctypes import * |
Sad Code
下载附件,查壳软件查一下壳
32位的 C++
丢进IDA里面反编译一下查看主函数
加密函数如下:
1 | int __cdecl main_0(int argc, const char **argv, const char **envp) |
简单分析一下源代码
重点是if语句中的代码,是一个八元一次方程组
编写解密脚本如下:
1 | // 解方程组 |
Bob’s Code
查个壳
32位C程序,无加壳
IDA反编译一下,查看主函数
主函数
代码如下
1 | int __cdecl main_0(int argc, const char **argv, const char **envp) |
简单分析一下
分布加密,依次看一下
加密1
加密代码如下
1 | unsigned int __cdecl sub_412560(int a1, unsigned int a2, int a3, unsigned __int8 a4) |
加密2
加密代码如下
1 | unsigned int __cdecl sub_4127C0(int a1, unsigned int a2, int a3, char a4) |
加密3
加密代码如下
1 | int __cdecl sub_412D10(int a1, int a2, char a3, int a4) |
分析一下’
1 | int a1 = v8 |
加密4
加密代码如下
1 | size_t __cdecl sub_412BF0(char *Str, int a2) // a2 = 2 |
解密脚本
我是憨批
1 | import base64 |
输入源代码中的str2
即可得到flag
VigenereLike
下载附件 IDA反编译查看主函数
找到main 函数打开
main 函数代码如下:
1 | __int64 __fastcall main(int a1, char **a2, char **a3) |
定位到v24字符串
代入解密脚本如下:
1 | # -*- coding: utf-8 -*- |
Ruststr
用IDA打开附件中的文件
F5反编译查看主函数
可以找到一串base64的字符串
代入解密脚本
1 | import base64 |
Mobile
MobileA
安卓逆向题,用Jeb打开附件,寻找MainActivity
Jeb快捷操作: Q-转换成为代码
完整代码如下:
1 | package com.example.mobilea; |
MSIC
2022冬奥会
题目提示 本次冬奥会吉祥物的设计原型
下载附件 发现其中有一个加密的jpg文件
猜测密码为 ‘熊猫’ 或者 ‘灯笼’
‘灯笼’实验成功, 但发现图片打不开,拖到010里面查看即可得到flag
单板小将苏翊鸣
附件是中包含一张图片和一个名为flag.txt的加密文件
可见突破口在图片中
显然这个图片的长宽不匹配
将图片用010editor打开
将图片的长改成与宽一致
保存后就可以得到一张大小完整的图片
扫码后可以得到一串编码
可以看出是汉字unicode编码
百度搜索在线转换解码
得到提示:密码应该是本次冬奥会中我国的总奖牌数和金银铜牌数
得到密码打开加密的txt文件就可以得到flag
藏在星空中的诗
下载附加,可以看到一共给了三个文件:一个txt,一个加密的excel还有一个.psd文件
用photoshop打开.psd文件可以看到有两个图层
将第一个图层的不透明度拉高,可以看到有一个五角星
结合txt文件中的内容猜测是告诉我们排列顺序
将记事本中的字符按照图片中的顺序排列后尝试当做excel的密码
打开excel后看到每一个字符对应的字母
翻译一下,得到flag:
藏在星空中的诗2
下载附件 得到一个txt文件,乍一看毫无头绪
联系题目 , 藏在星空中的诗2 ,根据藏在星空中的诗那道题的excel附件
尝试翻译一下 txt文件中的内容
可以看出前三个字符是相同的,猜测为unicode 编码
每一个符号只取最后一位
在线翻译一下即可得到flag
隐秘的信息
下载附件,发现是一个加密的图片,没有其他有用信息
看到题目中有一串怪异的字符串,拉去尝试解码,在base64下成功解出
尝试当作密码,成功解开文件的加密,得到下面的图片
图片隐写,用stegsolve打开,查看LSB隐写
看到hex信息的前三行有所不同,拉去解密
Web
冬奥会
php代码审计
题目代码如下
1 |
|
year的判断条件中要求数组不是数字数组但要和2022相等
应该是php的弱类型比较
get传参即可得到flag
1 | /?Information={"year":"2022a","items":[0,[0],0]} |