跟队友打了一下这个比赛,小白学习了很多知识
show_me_your_image
这道题目很晕,上传文件之后可以查看,URL中的name似乎可以进行任意文件读取,但是base64解码之后得到的结果却是乱码,同时session可以用之前flask解码的脚本解码,但是这明明是php???(后来才知道是伪装成了php的flask)
首先还是需要学习一下python中的requests
包,如何使用requests包上传文件
requests上传文件的简要代码如下:
1 | # coding=utf-8 |
files
中包含了file
对应的文件名,文件内容,和类型,有这三者就够了
参考师傅们的exp
1 | import urllib |
两个trick:
- fuzz出文件名的编码关系,这里是三个变四个
- /proc/self/cwd/ 指向的是当前路径,在本题中用于拼凑3倍数长度的字符串
其实我们只需要上传文件名然后获得对应的编码就行r = requests.post(target+"upload.php",files={'file': (filename + '.jpg', 'z3r0test', 'text/plain')})
之后调用BeautifulSoup
去解析就行了