BP上分析数据包,发现有提示:
Give me the file, and I will return the Running results by python to you!
意思是:上传一个文件,系统将用python运行它,并返回结果
经验告诉我们,上传的文件里应该含有python可执行代码。
os.system()函数
os.popen()函数——比os.system()更强大
在单元测试时发现os.popen效果更加强大;不仅可以调用 系统命令,实现等同于os.system效果,还可以读取返回值,
上传文件发现似乎只能上传图片
这也没关系,可以把文件重命名为.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(最后差点功亏一篑)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)