国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

利用python實現對web服務器的目錄探測的方法

2020-02-16 01:23:47
字體:
來源:轉載
供稿:網友

一、python

Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。

python 是一門簡單易學的語言,并且功能強大也很靈活,在滲透測試中的應用廣泛,讓我們一起打造屬于自己的滲透測試工具

二、web服務器的目錄探測腳本打造

1、在滲透時如果能發現web服務器中的webshell,滲透是不是就可以變的簡單一點尼

通常情況下御劍深受大家的喜愛,但是今天在測試的時候webshell不知道為什么御劍掃描不到

仔細查看是webshell有防爬功能,是檢測User-Agent頭,如果沒有就回返回一個自己定義的404頁面 

 

1、先來看看工具效果 

2、利用python讀取掃描的目錄字典

def get_url(path):    with open(path, "r", encoding='ISO-8859-1') as f:        for url in f.readlines():            url_list.append(url.strip())        return url_list

3、利用 python 的 requests 庫對web目標服務器進行目錄探測

def Go_scan(url):  while not queue.empty():    url_path = queue.get(timeout=1)    new_url = url + url_path    res = requests.get(new_url, headers=headers, timeout=5)    #print(res.status_code)    status_code = "[" + str(res.status_code) + "]"    if str(res.status_code) != "404":      print(get_time(), status_code, new_url)

4、利用 python 的 threading 庫對探測進行線程的設置

def thread(Number,url):  threadlist = []  for pwd in url_list:    queue.put(pwd)   for x in range(Number):    t = threading.Thread(target=Go_scan, args=(url,))    threadlist.append(t)   for t in threadlist:    t.start()

5、利用 python 的 argparse 庫進行對自己的工具進行封裝

def main():  if len(sys.argv) == 1:    print_banner()    exit(1)   parser = argparse.ArgumentParser(    formatter_class=argparse.RawTextHelpFormatter,    epilog='''/use examples: python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt ''')  parser.add_argument("-u","--url", help="scan target address", dest='url')  parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')  parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading",     dest="Dictionaries")

總結

各位大哥有意見或者建議盡管提,文章哪里不對的話會改的,小弟定會虛心學習最后附上全部源碼供大佬指教

#!/usr/bin/python# -*- coding: utf-8 -*- import requestsimport threadingimport argparse,sysimport time,osfrom queue import Queue url_list = []queue = Queue() headers = {  'Connection':'keep-alive',  'Accept':'*/*',  'Accept-Language': 'zh-CN',  'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'} def print_banner():  banner = r"""  .___.__      __________________   _____  _______   __| _/|__|_______  /  _____//_  ___ /  / _ /  /   /  / __ | | |/_ __ / /_____ / /  / // / /_/ / /  |  / / /_/ | | | | | // /    //   /____/  |  //  |  //____ | |__| |__|  /_______ / /______ //____|__ //____|__ /   //           //     //     //     //  [*] Very fast directory scanning tool.[*] try to use -h or --help show help message  """  print(banner) def get_time():  return '[' + time.strftime("%H:%M:%S", time.localtime()) + '] ' def get_url(path):  with open(path, "r", encoding='ISO-8859-1') as f:    for url in f.readlines():      url_list.append(url.strip())    return url_list  def Go_scan(url):  while not queue.empty():    url_path = queue.get(timeout=1)    new_url = url + url_path    res = requests.get(new_url, headers=headers, timeout=5)    #print(res.status_code)    status_code = "[" + str(res.status_code) + "]"    if str(res.status_code) != "404":      print(get_time(), status_code, new_url) def thread(Number,url):  threadlist = []  for pwd in url_list:    queue.put(pwd)   for x in range(Number):    t = threading.Thread(target=Go_scan, args=(url,))    threadlist.append(t)   for t in threadlist:    t.start()  def main():  if len(sys.argv) == 1:    print_banner()    exit(1)   parser = argparse.ArgumentParser(    formatter_class=argparse.RawTextHelpFormatter,    epilog='''/use examples: python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt ''')  parser.add_argument("-u","--url", help="scan target address", dest='url')  parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')  parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading",     dest="Dictionaries")  args = parser.parse_args()  Number =args.thread  url = args.url  url_path = args.Dictionaries  print_banner()  get_url(url_path)  print(get_time(), "[INFO] Start scanning----/n")  time.sleep(2)  thread(Number,url) if __name__ == '__main__':  main()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 顺义区| 那坡县| 津南区| 鹤岗市| 嫩江县| 密山市| 云梦县| 乡宁县| 桐乡市| 娄烦县| 巴林右旗| 永昌县| 静乐县| 固原市| 蓬溪县| 茂名市| 聊城市| 广宁县| 岳西县| 海丰县| 洞口县| 株洲县| 山东省| 景东| 太和县| 昌吉市| 财经| 乌兰察布市| 克什克腾旗| 阿拉善盟| 正蓝旗| 观塘区| 宁南县| 佛冈县| 密云县| 井冈山市| 双桥区| 达日县| 密山市| 界首市| 阿拉善左旗|