CTF之路:Flask

CTF之路:Flask,第1张

CTF之路:Flask 1.题目

BP上分析数据包,发现有提示:
Give me the file, and I will return the Running results by python to you!
意思是:上传一个文件,系统将用python运行它,并返回结果

经验告诉我们,上传的文件里应该含有python可执行代码

2.知识点

os.system()函数
os.popen()函数——比os.system()更强大
在单元测试时发现os.popen效果更加强大;不仅可以调用 系统命令,实现等同于os.system效果,还可以读取返回值,

3.解析

上传文件发现似乎只能上传图片
这也没关系,可以把文件重命名为.png/jpg
打开一个file,写入代码

import os
os.system('ls')

重命名为flag.png

上传flag.jpg,BP监听数据包,发现执行了文件中的代码
![!在这里插入图片描述](https://img-blog.csdnimg.cn/3639d72f4e6e4cdb82158ed51810d518.png)Response应答数据包里回显了ls的执行结果:
app.py
templates
upload
没有找到flag
尝试ls根目录,看看能否找到flag文件

有两种方法:

1.直接将之前的数据包发送给Repeated,在里边直接修改数据包中的代码

2.修改flag.png的代码,再重新上传(比1麻烦)

import os
os.system('ls /')

因此,直接在Repeated里修改,

os.system('ls /')  ##之前是  os.system('ls') 

得到结果,终于找到flag。
下面就是把他打印出来即可。

依旧是在Repeated内直接把修改代码,重发。

得到flag

因为flag在根目录下,所以是/flag(最后差点功亏一篑)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5700509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存