一、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目标服务器进行目录探测

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

4、利用 python 的 threading 库对探测进行线程的设置

  1.  
    def thread(Number,url):
  2.  
        threadlist = []
  3.  
        for pwd in url_list:
  4.  
            queue.put(pwd)
  5.  
     
  6.  
        for x in range(Number):
  7.  
            t = threading.Thread(target=Go_scan, args=(url,))
  8.  
            threadlist.append(t)
  9.  
     
  10.  
        for t in threadlist:
  11.  
            t.start()

5、利用 python 的 argparse 库进行对自己的工具进行封装

  1.  
    def main():
  2.  
        if len(sys.argv) == 1:
  3.  
            print_banner()
  4.  
            exit(1)
  5.  
     
  6.  
        parser = argparse.ArgumentParser(
  7.  
            formatter_class=argparse.RawTextHelpFormatter,
  8.  
            epilog='''\
  9.  
    use examples:
  10.  
      python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt
  11.  
      python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt
  12.  
      ''')
  13.  
        parser.add_argument("-u","--url", help="scan target address", dest='url')
  14.  
        parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')
  15.  
        parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading",
  16.  
            dest="Dictionaries")

总结
各位大哥有意见或者建议尽管提,文章哪里不对的话会改的,小弟定会虚心学习最后附上全部源码供大佬指教

  1.  
    #!/usr/bin/python
  2.  
    # -*- coding: utf-8 -*-
  3.  
     
  4.  
    import requests
  5.  
    import threading
  6.  
    import argparse,sys
  7.  
    import time,os
  8.  
    from queue import Queue
  9.  
     
  10.  
    url_list = []
  11.  
    queue = Queue()
  12.  
     
  13.  
    headers = {
  14.  
        'Connection':'keep-alive',
  15.  
        'Accept':'*/*',
  16.  
        'Accept-Language': 'zh-CN',
  17.  
        'User-Agent':'Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0'
  18.  
    }
  19.  
     
  20.  
    def print_banner():
  21.  
        banner = r"""
  22.  
        .___.__            __________________     _____    _______  
  23.  
      __| _/|__|_______   /   _____/\_   ___ \   /  _  \   \      \ 
  24.  
     / __ | |  |\_  __ \  \_____  \ /    \  \/  /  /_\  \  /   |   \
  25.  
    / /_/ | |  | |  | \/  /        \\     \____/    |    \/    |    \
  26.  
    \____ | |__| |__|    /_______  / \______  /\____|__  /\____|__  /
  27.  
         \/                      \/         \/         \/         \/
  28.  
     
  29.  
    [*] Very fast directory scanning tool.
  30.  
    [*] try to use -h or --help show help message
  31.  
        """
  32.  
        print(banner)
  33.  
     
  34.  
    def get_time():
  35.  
        return '[' + time.strftime("%H:%M:%S", time.localtime()) + '] '
  36.  
     
  37.  
    def get_url(path):
  38.  
        with open(path, "r", encoding='ISO-8859-1') as f:
  39.  
            for url in f.readlines():
  40.  
                url_list.append(url.strip())
  41.  
            return url_list
  42.  
     
  43.  
     
  44.  
    def Go_scan(url):
  45.  
        while not queue.empty():
  46.  
            url_path = queue.get(timeout=1)
  47.  
            new_url = url + url_path
  48.  
            res = requests.get(new_url, headers=headers, timeout=5)
  49.  
            #print(res.status_code)
  50.  
            status_code = "[" + str(res.status_code) + "]"
  51.  
            if str(res.status_code) != "404":
  52.  
                print(get_time(), status_code, new_url)
  53.  
     
  54.  
    def thread(Number,url):
  55.  
        threadlist = []
  56.  
        for pwd in url_list:
  57.  
            queue.put(pwd)
  58.  
     
  59.  
        for x in range(Number):
  60.  
            t = threading.Thread(target=Go_scan, args=(url,))
  61.  
            threadlist.append(t)
  62.  
     
  63.  
        for t in threadlist:
  64.  
            t.start()
  65.  
     
  66.  
     
  67.  
    def main():
  68.  
        if len(sys.argv) == 1:
  69.  
            print_banner()
  70.  
            exit(1)
  71.  
     
  72.  
        parser = argparse.ArgumentParser(
  73.  
            formatter_class=argparse.RawTextHelpFormatter,
  74.  
            epilog='''\
  75.  
    use examples:
  76.  
      python dir_scan.py -u [url]http://www.test.com[/url] -d /root/dir.txt
  77.  
      python dir_scan.py -u [url]http://www.test.com[/url] -t 30 -d /root/dir.txt
  78.  
      ''')
  79.  
        parser.add_argument("-u","--url", help="scan target address", dest='url')
  80.  
        parser.add_argument("-t","--thread", help="Number of threads", default="20", type=int, dest='thread')
  81.  
        parser.add_argument("-d","--Dictionaries", help="Dictionary of Blasting Loading",
  82.  
            dest="Dictionaries")
  83.  
        args = parser.parse_args()
  84.  
        Number =args.thread
  85.  
        url = args.url
  86.  
        url_path = args.Dictionaries
  87.  
        print_banner()
  88.  
        get_url(url_path)
  89.  
        print(get_time(), "[INFO] Start scanning----\n")
  90.  
        time.sleep(2)
  91.  
        thread(Number,url)
  92.  
     
  93.  
    if __name__ == '__main__':
  94.  
        main()

利用 python 实现对web服务器的目录探测的更多相关文章

  1. 利用Python实现对Web服务器的目录探测

    今天是一篇提升技能的干货分享,操作性较强,适用于中级水平的小伙伴,文章阅读用时约3分钟. PART 1/Python Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python ...

  2. python 启动简单web服务器

    有时我们在开发web静态页面时,需要一个web服务器来测试. 这时可以利用python提供的web服务器来实现. 1.在命令行下进入某个目录 2.在该目录下运行命令: python -m Simple ...

  3. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  4. 用 Python 脚本实现对 Linux 服务器的网卡流量监控

    *这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助 工作原理:基于/proc文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新 ...

  5. 利用过滤器Filter和特性Attribute实现对Web API返回结果的封装和统一异常处理

    在我们开发Web API应用的时候,我们可以借鉴ABP框架的过滤器Filter和特性Attribute的应用,实现对Web API返回结果的封装和统一异常处理,本篇随笔介绍利用AuthorizeAtt ...

  6. c#调用js,以及js调用C#里的函数, c#自己生成js代码,实现对web的控制

    using mshtml;using System;using System.Collections.Generic;using System.Linq;using System.Security.P ...

  7. 通过脚本实现对web的健康检查

    前面的文章中(https://www.cnblogs.com/zyxnhr/p/10707932.html),通过nginx的第三方模块实现对web端的一个监控,现在通过一个脚本实现对第三方的监控 脚 ...

  8. 利用iptables防火墙保护web服务器

    实例:利用iptables防火墙保护web服务器 防火墙--->路由器-->交换机-->pc机 配置之前,清空下已有的规则,放在规则冲突不生效 工作中,先放行端口写完规则,再DROP ...

  9. Python 脚本实现对 Linux 服务器的监控

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 原文地址 由于原文来自微信公众号,并且脚本都是图片,所以这里 ...

随机推荐

  1. 《剑指offer》数组中的逆序对

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

  2. swoole 版本查看

    php --ri swoole php --ri swoole | grep Version  查看swoole版本 php -m | grep swoole  查看swoole拓展是否安装成功(ph ...

  3. elment-ui中 修改el-table表头的颜色

    可以直接在table上添加: :header-cell-style="{background:'#f5f7fa'}" 也可以使用绑定方法来修改 :header-cell-style ...

  4. <转>Go语言TCP Socket编程

    授权转载: Tony Bai 原文连接: https://tonybai.com/2015/11/17/tcp-programming-in-golang/ Golang的主要 设计目标之一就是面向大 ...

  5. 今日头条Marketing API小工具(.Net Core版本)

    前言 由于工作原因,需要用到今日头条的Marketing API做一些广告投放的定制化开发.然后看现在网上也没多少关于头条Marketing API的文章,于是便就有了该篇文章. 头条Marketin ...

  6. jinja2

    本文转自:https://www.cnblogs.com/dachenzi/p/8242713.html 模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用, ...

  7. windows jdk安装

    先去官网下载安装包 x86 32位 x64 64位 下载地址 安装jdk 安装目录默认c盘 配置系统环境 JAVA_HOME环境变量.作用:它指向jdk的安装目录,Eclipse/NetBeans/T ...

  8. php 缓存 加速缓存

    PHP四大加速缓存器opcache,apc,xcache,eAccelerator eAccelerator,xcache,opcache,apc(偏数据库缓存,分系统和用户缓存)是PHP缓存扩展, ...

  9. python控制语句---循环结构语句

    这次主要把循环结构的控制语句补上,主要包含while.for.continue.break.循环嵌套.主要写一些基本的认识以及包含的一些实例.当只有唯一路径且只跑一次的时候选择上一节中的选择结构语句就 ...

  10. Android滑动列表(拖拽,左滑删除,右滑完成)功能实现(2)

    ItemTouchHelper类 之前我们实现了滑动列表的一些基本功能,为了实现更多的效果,我们来仔细看一下ItemTouchHelper中的类: ItemTouchHelper.SimpleCall ...