0%

实验室暑期CTF训练赛--第二周

题目链接:
链接:https://pan.baidu.com/s/1VX6DZrI03kNTaijI7xoD3g
提取码:r37q

misc

misc1

wireshark保存的文件
打开搜索flag
在这里插入图片描述
打开搜到的包发现有很多文件
在这里插入图片描述
使用foremost分离文件

1
foremost 02_misc01.pcapng

得到一个压缩包
在这里插入图片描述
需要解压密码
爆破不出来,回到wireshark中寻找
接着搜flag,发现1150的包多了jpg文件
在这里插入图片描述
对这个包追踪TCP流量

FFD8 FFD9分别是jpg文件的开头和结尾
在这里插入图片描述
复制下这一段,使用脚本恢复
在这里插入图片描述
在项目文件夹里面打开图片
在这里插入图片描述
输入密码
flag是:flag{3OpWdJ-JP6FzK-koCMAK-VkfWBq-75Un2z}

RE

junkcode

看名字还以为是花指令,结果不是…
这个题是SMC(Self-modifying code 自修改代码):自修改代码是一种编程原理,开发人员可以编写一个程序,在执行时可以更改自己的代码。

查壳无壳
在这里插入图片描述
IDA打开,发现分析不出什么有效的信息
看它的Entry point
在这里插入图片描述
可以看到入口点在nop处,查看nop
在这里插入图片描述
可以发现从check到nop这段被异或加密了
我们看一下check函数,F5无法反编译
在这里插入图片描述
使用IDC脚本解密,先找到开头和结尾
在这里插入图片描述
在这里插入图片描述
编写脚本

1
2
3
4
5
auto i;
for(i=0x80484fb;i<=0x80485fa;i++)
{
PatchByte(i,Byte(i)^0x22);
}

shift+F2打开IDC编译器
在这里插入图片描述
运行完成后check函数变成了这样
在这里插入图片描述
我们可以看到此时check函数的地址还是红色的,说明需要我们构建函数才可以反编译成C的伪代码。
点击check函数的开头地址
在这里插入图片描述
按P键
在这里插入图片描述
即可F5查看check函数的伪代码
在这里插入图片描述
很简单的异或
byte_80486A0byte_80486B9中的数据提取出来
在这里插入图片描述
编写Python脚本

1
2
3
4
5
6
7
8
9
10
str1 = [0xFC, 0xE8, 0x64, 0xE1, 0xDD, 0x96, 0x18, 0x9A, 0x8D, 0x18,
0x0D, 0xFA, 0xA1, 0x2C, 0x01, 0x54, 0xE0, 0x38, 0x08, 0xB3,
0x82, 0x67, 0x55, 0x38]
str2 = [0xD6, 0x8B, 0x10, 0x87, 0xA6, 0xFC, 0x6D, 0xF4, 0xE6, 0x38,
0x6E, 0x95, 0xC5, 0x49, 0x21, 0x3A, 0x8F, 0x4C, 0x28, 0xD9,
0xF7, 0x09, 0x3E, 0x45]
flag = ""
for i in range(24):
flag += chr(str1[i] ^ str2[i])
print(flag)

在这里插入图片描述
flag是:ctf{junk code not junk}