Warmup
下载该链接获取html即可:
Zakukozh
Zakukozh.bin:
题目说明文件是一个图像文件,但是被仿射密码加密。
目前常见的图片文件有:jpg、png、bmp、gif。根据magic num来判断原文件格式。
jpg魔数:ff d8 ff e0,对比可知不是jpg文件。
png魔数: 89 50 4E 47 0D 0A 1A 0A,对比可知可能为png文件。
int main()
{
long inv_a = inverse(0xF, 0x100);
char c;
ifstream inFile("../Debug/zakukozh.bin", ios::binary | ios::in); //以二进制读模式打开文件
if (!inFile) {
cout << "Source file open error." << endl;
return 0;
}
ofstream outFile("../Debug/zakukozh.png", ios::binary | ios::out); //以二进制写模式打开文件
if (!outFile) {
cout << "New file open error." << endl;
inFile.close();
return 0;
}
while (inFile.get(c)) //每次读取一个字符
{
char tmp = inv_a * (c - 0x59) % 0x100;
outFile.put(tmp); //每次写入一个字符
}
outFile.close();
inFile.close();
return 0;
}
Oldman Reverse
oldman.asm
.MCALL .TTYOUT,.EXIT
START:
mov #MSG r1
mov #0d r2
mov #32d r3
loop:
mov #MSG r1
add r2 r1
movb (r1) r0
.TTYOUT
sub #1d r3
cmp #0 r3
beq DONE
add #33d r2
swab r2
clrb r2
swab r2
br loop
DONE:
.EXIT
MSG:
.ascii "cp33AI9~p78f8h1UcspOtKMQbxSKdq~^0yANxbnN)d}k&6eUNr66UK7Hsk_uFSb5#9b&PjV5_8phe7C#CLc#<QSr0sb6{%NC8G|ra!YJyaG_~RfV3sw_&SW~}((_1>rh0dMzi><i6)wPgxiCzJJVd8CsGkT^p>_KXGxv1cIs1q(QwpnONOU9PtP35JJ5<hlsThB{uCs4knEJxGgzpI&u)1d{4<098KpXrLko{Tn{gY<|EjH_ez{z)j)_3t(|13Y}"
.end START
SWAB指令交换指定字的高字节和低字节,并且没有字节寻址。
以上资料来自维基百科。得知swab为word的字节交换,clrb为字节清除。还原为C代码如下所示。
#include <stdio.h>
int main()
{
char msg[] = "cp33AI9~p78f8h1UcspOtKMQbxSKdq~^0yANxbnN)d}k&6eUNr66UK7Hsk_uFSb5#9b&PjV5_8phe7C#CLc#<QSr0sb6{%NC8G|ra!YJyaG_~RfV3sw_&SW~}((_1>rh0dMzi><i6)wPgxiCzJJVd8CsGkT^p>_KXGxv1cIs1q(QwpnONOU9PtP35JJ5<hlsThB{uCs4knEJxGgzpI&u)1d{4<098KpXrLko{Tn{gY<|EjH_ez{z)j)_3t(|13Y}";
char* pMsg = msg;
short index = 0;
for (int i = 32; i != 0; i--)
{
pMsg = msg + index;
char tmp = *pMsg;
printf("%c", tmp);
index += 33;
index = index & 0xff;
}
return 0;
}
Tone
该链接是一个y站的视频地址,画面没有啥的,有声音,下载并转换格式为wav,使用audacity打开。
对比频率一一获取到按键序号:
222 999 22 777 444 222 7777 7777 33 222 777 33 8 8 666 66 2 555 333 555 2 4
电话按键对应字母:
cybricssecrettonalflag
参考链接:https://www.freebuf.com/geek/5507.html
Sender (Network, Baby, 10 pts)
从txt中获取flag:https://cybrics.net/files/intercepted_text.txt
220 ugm.cybrics.net ESMTP Postfix (Ubuntu)
EHLO localhost
250-ugm.cybrics.net
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN
334 VXNlcm5hbWU6
ZmF3a2Vz
334 UGFzc3dvcmQ6
Q29tYmluNHQxb25YWFk=
235 2.7.0 Authentication successful
MAIL FROM: <[email protected]>
250 2.1.0 Ok
RCPT TO: <[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: fawkes <[email protected]>
To: Area51 <[email protected]>
Subject: add - archive pw
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
=62=74=77=2E=0A=0A=70=61=73=73=77=6F=72=64 =66=6F=72 =74=68=65 =61=72=63=
=68=69=76=65 =77=69=74=68 =66=6C=61=67=3A =63=72=61=63=6B=30=57=65=73=74=
=6F=6E=38=38=76=65=72=74=65=62=72=61=0A=0A=63=68=65=65=72=73=21=0A
.
250 2.0.0 Ok: queued as C4D593E8B6
QUIT
221 2.0.0 Bye
扫描域名 ugm.cybrics.net,获取到三个开放端口。
看起来就像是base64编码:
获取到用户名和密码,尝试远程登陆。其中pop3端口查看邮件,telnet ugm.cybrics.net 110
很明显这是一个名为"secret_flag.zip"的压缩文件,将base64解密后的数据保存为zip文件。
最下面的等号加数字一串看起来像编码,尝试后为:url解码
整理后得到:flag压缩包的密码为crack0Weston88vertebra。解压得到flag。
ProCTF
登陆后环境swi-prolog相关链接:shell执行指令, 有人已经拿到了flag,在user目录下(emmmm,这就是经验吗)。
Bitkoff Bank
Need more money! Need the flag!
http://45.77.201.191/index.php
Mirror: http://95.179.148.72:8083/index.php
使用1$购买flag, $通过btc兑换,btc需要手动点击mine btc按钮,每次增加一点点点点点点点点点点点点。一开始通过截获修改请求但是无效,最后解决办法是保存增加btc的请求,通过脚本循环点击一直到btc足够。