0x01前言

Facebook CTF感觉质量一般,而且服务器超级不稳定,在这里记录一下

0x02正文

一.products manager

下载源码,观察逻辑,flag藏在Facebook中的描述里面,view函数要求输入名字和密码,但是密码位置,一开始以为是要注入,但是php,bind_param感觉没法绕,考虑到是否能进行覆盖,在判断是否重复的时候和写入数据库时不同,mysql储存时应该吧空格去掉了,所以名字设置为Facebook空格,密码自己设置,成功覆盖掉原来的密码,得到flag。

二.pdfme

这个pdf的洞:https://www.exploit-db.com/exploits/44022

三.rceservice

可以输入json来命令执行,但是preg_match过滤了很多东西,这里有两种方法来绕过,这里可以用换行符来绕过,或者利用正则回溯的次数限制来,

?cmd=%7B%0a%22cmd%22%3A+%22ls+%2Fhome%2Frceservice%22%0a%7D

但是又限制了路径,没法直接cat,我们可以利用绝对路径,导入cat命令

?cmd=%7B%0a%22cmd%22%3A+%22%2Fbin%2Fcat+%2Fhome%2Frceservice%2Fflag%22%0a%7D

四.events

ssti+伪造Flask session

ssti的点在类型那里,可以利用__init__.__globals__[app].__dict__读出flask app的相关设置从而拿到secret_key,然后利用脚本可以伪造user的cookie,加密看到是用户名,那么利用这个加密用户名admin就能拿到flag。脚本如下:

cryption.py

decryption.py:

拿到flag:

0x03总结

认真做应该是可以做出来的。