前言
打完湖湘杯紧接着就是红帽杯,两场比赛形成鲜明对比,吹一波pwn爷爷牛逼!
Web
Ticket_System
通过js可以找到postXML接口
XXE漏洞存在,读取根目录下的hints.txt得知需要实现rce
从报错页面得知thinkphp的版本为5.2.0,查到tp5.2的RCE pop链并利用
1 |
|
通过ls打回发现根目录有flag和readflag,flag无法直接读,而拿下readflag放入ida发现需要提交问题答案才能得到flag,这里想到了*CTF的mywebsql,于是将那题的脚本写入上传
1 |
|
然后使用
1 | php /tmp/uploads/4a8a08f09d37b73795649038408b5f33/20191111/a1366473906508668348fdf37c6c6feb.xml |
运行flag弹回到端口上
Crypto
Broadcast
出题人失误,源文件直接给出了flag
Related
由题目已知
由题目名联想到Related Message Attack,比赛的时候弟弟们只找到了这个Orz
https://github.com/ashutosh1206/Crypton/tree/master/RSA-encryption/Attack-Franklin-Reiter
没有找到下面这个paper,从这个paper可以找到一个推广的结论
https://www.cs.unc.edu/~reiter/papers/1996/Eurocrypt.pdf
据此可以构造同余方程组, 利用 Gtoebner Basis 对方程式的变量做线性变换的化解(类似于求代数方程的解) 即可解出初始状态获得 flag
1 | import binascii |
精明的Alice
题目名说是Broadcast,但实际上并不是简单的广播攻击。简单的广播攻击,前提是对同一个m加密,但在这一题里,显然每一次的m都不一样,并且e=3的时候,只有2个明密文对
1 | data = {'from': sha256( b'Alice' ).hexdigest(), |
其中只有'to' : name
会变,又由于json.dumps(data, sort_keys=True)
,data会根据key排序输出,即
可以发现,msg会被排序至中间这个位置。根据题目,我们可以知道每一个m
的高、中位都是不变的,只不过低位变了而已,而我们要求的是中间的msg,参考SCTF的babygame
http://www.soreatu.com/ctf/writeups/Writeup%20for%20babygame%20in%202019%20SCTF.html
使用Broadcast Attack with Linear Padding
https://github.com/ashutosh1206/Crypton/tree/master/RSA-encryption/Attack-Hastad-Broadcast
Misc
签到
填问卷拿flag
Advertising for Marriage
查看文件发现vegetable.png,然后dump下来
但是这个图在kali里打不开,显示crc错误,拖出来爆破得到高度为d3,修改得到原图片
1 | import binascii |
再次查看进程,发现画图进程mspaint.exe
dump下来经过一番处理得到:b1cx
查看notepad text
结合得到b1cxneedmoneyandgirlfirend,使用lsb隐写恢复数据
base64解密得到Virginia ciphertext:gnxtmwg7r1417psedbs62587h0
Virginia解密得到flagisd7f1417bfafbf62587e0
恶臭的数据包
拿到数据包发现是wifi加密的流量,随便跑个字典拿到密码
1 | aircrack-ng cacosmia.cap -w dict.txt |
用essid和密码解密流量包
1 | airdecap-ng cacosmia.cap -e mamawoxiangwantiequan -p 12345678 |
打开解密流量包,发现有一张png,并且在末尾发现一个压缩包,里面有flag.txt,但是需要密码
解密jwt,说密码是一个网址
过滤dns,把全部网址试一遍,最后找到这个
解压得到flag{f14376d0-793e-4e20-9eab-af23f3fdc158}