用户
搜索
  • TA的每日心情
    奋斗
    2018-10-28 17:38
  • 签到天数: 235 天

    连续签到: 1 天

    [LV.7]常住居民III

    管理员

    Supreme玩家

    Rank: 9Rank: 9Rank: 9

    78

    主题

    2289

    帖子

    1万

    魔法币
    收听
    0
    粉丝
    141
    注册时间
    2016-2-5

    楚核心白帽i春秋签约作者白帽传说春秋游侠秦燕魏赵齐突出贡献

    发表于 2018-7-16 21:10:35 5736129
    本文原创作者:阿甫哥哥,本文属i春秋原创奖励计划,未经许可禁止转载
    0.jpg
    系列文章专辑:
    Python大法之告别脚本小子系列
    目录:
    0x05 高精度字典生成脚本编写

    0x06 Queue模块的讲解

    0x07 目录扫描脚本编写

    0x08 C段扫描脚本编写

    0x05 高精度字典生成脚本编写
    15036522328213.png
    思路来自i春秋讲师ADO的课程,传送门:
    Python安全工具开发应用  >  高精度字典生成(一)
    有人可能会问生成字典有什么卵用??
    如果你在爆破中用一个G大小的字典,可能也不会获得到什么信息,但是,如果你通过已知的部分信息生成字典进行爆破,这样你的成功率会大大的提高,本文用到的模块也是exrex,思路也五五开。。。

    官方介绍:https://github.com/asciimoo/exrex

    安装方法:pip install exrex

    建立一个密码字典(无非就是已知的信息)

    84.png
    我只是简单的举了个栗子,也用了一个简单的匹配方式
    [Python] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import exrex
    
    def dic_create(hosts):
            web_dics = hosts.split('.')
            for web_dic in web_dics:
                    f_pass = open('pass.txt',"r")
                    for dic_pass in f_pass:
                            dics = list(exrex.generate(web_dic+'[!@#]'+dic_pass))
                            for dic in dics:
                                    print dic.strip('\n')
     
    if __name__ == '__main__':
            dic_create('www.ichunqiu.com')

    这样就简单的造了一个字典生成器
    问题又来了,他把我域名中的http://,www,com都生成了,其实并没有什么卵用。。。所以,就要去掉他
    [Python] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import exrex
    
    def dic_create(hosts):
            web_dics = hosts.split('.')
            for web_dic in web_dics:
                    if web_dic not in web_white:
                            f_pass = open('pass.txt',"r")
                            for dic_pass in f_pass:
                                    dics = list(exrex.generate(web_dic+'[!@#]'+dic_pass))
                                    for dic in dics:
                                                    print dic.strip('\n')
     
    if __name__ == '__main__':
            web_white = ['com','cn','org','edu','gov','www']
            host = 'www.ichunqiu.com'
            if '://' in host:
                    host = host.split('://')[1]
            if '/' in host:
                    host = host.replace('/','')
            dic_create(host)

    然后就差不多了,顶多加个判断,排除简单的密码组合
    [Python] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import exrex
    
    def dic_create(hosts):
            web_dics = hosts.split('.')
            for web_dic in web_dics:
                    if web_dic not in web_white:
                            f_pass = open('pass.txt',"r")
                            for dic_pass in f_pass:
                                    dics = list(exrex.generate(web_dic+'[!@#]'+dic_pass))
                                    for dic in dics:
                                            if len(dic) > 5:
                                                    print dic.strip('\n')
     
    if __name__ == '__main__':
            web_white = ['com','cn','org','edu','gov','www']
            host = raw_input('PLEASE INPUT YOUR TARGET:')
            if '://' in host:
                    host = host.split('://')[1]
            if '/' in host:
                    host = host.replace('/','')
            dic_create(host)

    85.gif

    0x06 Queue模块的讲解
    自带的模块,不用安装,你们可以去看官方文档学习,我也只是简单的说一下
    创建一个队列
    [Python] 纯文本查看 复制代码
    D:\ichunqiu\items>python
    Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import Queue
    >>> queue = Queue.Queue()

    将值放入队列中
    [Python] 纯文本查看 复制代码
    >>> for i in range(8):
    ...     queue.put(i)
    ...

    返回队列大小
    [Python] 纯文本查看 复制代码
    >>> queue.qsize()
    8

    取出队列中的值
    [Python] 纯文本查看 复制代码
    >>> queue.get()
    0
    >>> queue.get()
    1
    >>> queue.get()
    2

    Threading与Queue的结合
    [Python] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import threading
    import Queue
    
    class DemoRUN(threading.Thread):
        def __init__(self,queue):
            threading.Thread.__init__(self)
            self._queue = queue
        def run(self):
            while not self._queue.empty():
                key = self._queue.get()
                print key
    def main():
        threads = []
        threadnum = 20        #线程数
        queue = Queue.Queue()
        for i in range(1,9):
            queue.put(i)
        for i in xrange(threadnum):
            threads.append(DemoRUN(queue))
        for t in threads:
            t.start()
        for t in threads:
            t.join()
    if __name__ == '__main__':
        main()

    这就是一个大概的模块
    0x07 目录扫描脚本编写
    15202361605889.png
    目录扫描,顾名思义,就是目录扫描,在信息收集中也算重要的一环了
    所以我先简单放出一个单线程版,大概思路就是引入字典,URl+字典内容,访问,状态码是200就保留

    [AppleScript] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import requests
    
    def scan_target_url_exists(target_url):
        headers={
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'Accept-Encoding': 'gzip, deflate',
            'Referer': 'http://www.google.com'
            }
        status_codes = [200]
        all_lines=open(dir_file,'r').readlines()
        for i in all_lines:
                url = target_url+'/'+str(i)
            req=requests.head(url.strip(),timeout=8,headers=headers)
            if req.status_code in status_codes:
                print 'CODE:%s,URL:%s'%(str(req.status_code),url.strip('\n').strip('\r'))
                open('exists_target_url.txt','a').write(url)
    
    if __name__ == '__main__':
        dir_file='demo.txt'
        target_url='localhost'
        if target_url.startswith('http://') or target_url.startswith('https://'):
            pass
        else:
            target_url = 'http://' + target_url
        scan_target_url_exists(target_url)
    

    没有什么知识点,直接看吧,接下来,是多线程的
    用到了queue,优化了一下code
    [Python] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import requests
    from threading import Thread, activeCount
    import Queue
    
    queue = Queue.Queue()
    dir_file='demo.txt'
    
    def scan_target_url_exists(target_url):
        headers={
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'Accept-Encoding': 'gzip, deflate',
            'Referer': 'http://www.google.com'}
        status_codes = [200]
        try:
            req=requests.head(target_url.strip(),timeout=8,headers=headers)
            if req.status_code in status_codes:
                print 'CODE:%s,URL:%s'%(str(req.status_code),target_url.strip('\n').strip('\r'))
                open('exists_target_url.txt','a').write(target_url)
        except:
            pass
    def open_pathfile(file):
        all_lines=open(file,'r').readlines()
        for line in all_lines:
            if target_url.endswith('/'):
                if line.startswith('/'):
                    queue.put(target_url+line[1:])
                else:
                    queue.put(target_url + line)
            else:
                if line.startswith('/'):
                    queue.put(target_url + line)
                else:
                    queue.put(target_url + '/' + line)
    
    if __name__ == '__main__':
        print '''
     ____  _      ____                  
    |  _ \(_)_ __/ ___|  ___ __ _ _ __  
    | | | | | '__\___ \ / __/ _` | '_ \ 
    | |_| | | |   ___) | (_| (_| | | | |
    |____/|_|_|  |____/ \___\__,_|_| |_|
    
        '''
        target_url=raw_input('Please input your target:')
        threadnum = raw_input('Please input your threadnum:')
        if target_url.startswith('http://') or target_url.startswith('https://'):
            pass
        else:
            target_url = 'http://' + target_url
        print 'The number of threads is %s' % threadnum
        print 'Matching.......'
        open_pathfile(dir_file)
        while queue.qsize() > 0:
            if activeCount() <= int(threadnum):
                Thread(target=scan_target_url_exists,args=(queue.get(),)).start()

    86.gif
    当然了,这里有你们想要的目录扫描的字典
    游客,如果您要查看本帖隐藏内容请回复

    0x08 C段扫描脚本编写
    15314662558634.png
    C段扫描在渗透测试中也算是很重要的,具体有多么的重要呢??我也说不清楚,反正你就记住很重要就完事了,啊哈哈..
    然后ADO的课程也有讲,不过课程贵,本着大家跟我一样买不起的想法
    写了一个简单的脚本
    大概思路:生成ip段,逐个访问ip,然后有状态码的保留
    这是一个很简单的脚本,各位dalao可以继续完善
    [Python] 纯文本查看 复制代码
    #-*- coding: UTF-8 -*-
    import requests
    import threading
    import Queue
    import sys
    import ipaddr
    
    class PortScan(threading.Thread):
        def __init__(self,queue):
            threading.Thread.__init__(self)
            self._queue = queue
            self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',}
        def run(self):
            while True:
                if self._queue.empty():
                    break
                try:
                    ip = str(self._queue.get(timeout=5))
                    url = 'http://' + ip
                    r = requests.get(url=url,headers=self.headers,timeout=5)
                    status = r.status_code
                    if status:
                        sys.stdout.write("%-27s\n" % (url))
                except Exception:
                    pass
    def main():
        if len(sys.argv) != 2:
            print 'Usage: python %s 192.168.1.1/24'%(sys.argv[0]) 
        else:
            threads = []
            threadnum = 250        #线程数
            queue = Queue.Queue()
            cidrip = sys.argv[1]      #接收输入IP段
            ips = ipaddr.IPNetwork(cidrip)
            for ip in ips:
                queue.put(ip)
            for i in xrange(threadnum):
                threads.append(PortScan(queue))
            for t in threads:
                t.start()
            for t in threads:
                t.join()
            print 'ALL Finished!'
    if __name__ == '__main__':
        main()

    87.gif
    各位dalao,小弟没钱吃饭了,救救孩子吧


    1531056433293.jpg
    我的文章虽然没有蛋蛋的毒鸡汤,但是有Peace and Love...
    啊哈哈哈,再分享一首歌吧Kris Wu的Like That,歌很cool的
    本集完


    本帖被以下淘专辑推荐:

    一位特爱收藏Supreme的大哥哥....

    回帖奖励 +4

    ____  _      ____                  
    |  _ \(_)_ __/ ___|  ___ __ _ _ __  
    | | | | | '__\___ \ / __/ _` | '_ \
    | |_| | | |   ___) | (_| (_| | | | |
    |____/|_|_|  |____/ \___\__,_|_| |_|老哥这种怎么弄的

    评分

    参与人数 1魔法币 +1 收起 理由
    Exp1ore + 1 figlet了解一下?

    查看全部评分

    使用道具 举报 回复

    回帖奖励 +4

    get it                       
    使用道具 举报 回复
    发表于 2018-7-16 21:21:35
    求求各位dalao给我点饭钱,小弟真的没钱吃饭了,救救孩子吧...
    1531056433293.jpg
    一位特爱收藏Supreme的大哥哥....
    使用道具 举报 回复
    咯咯咯咯咯嘎嘎嘎嘎嘎嘎嘎个过过过过过过过过过过过过过过过过过过过过过
    使用道具 举报 回复

    回帖奖励 +4

    {:3_45:}{:3_45:}{:3_45:}{:3_45:}{:3_45:}{:3_45:}
    使用道具 举报 回复
    666666666666666666666666666666666666666
    使用道具 举报 回复
    发表于 2018-7-26 15:34:45

    回帖奖励 +4

    阿甫哥哥 多写点python文章 正在学习python
    使用道具 举报 回复

    回帖奖励 +4

    666666666666666666666666666666666666
    使用道具 举报 回复

    回帖奖励 +4

    顶大佬更新
    使用道具 举报 回复
    发表于 2018-7-16 21:44:32

    回帖奖励 +4

    学习学习
    使用道具 举报 回复
    发表于 2018-7-16 23:27:47

    回帖奖励 +4

    学习了
    使用道具 举报 回复
    发表于 2018-7-17 08:07:20

    回帖奖励 +4


    学习学习
    使用道具 举报 回复
    发表于 2018-7-17 08:39:57
    学习学习~哈哈~
    使用道具 举报 回复

    回帖奖励 +4

    想要字典
    使用道具 举报 回复
    发表于 2018-7-17 14:59:17

    回帖奖励 +4

    谢谢大神~
    使用道具 举报 回复
    发表于 2018-7-17 15:40:14
    qjweojowje  
    使用道具 举报 回复
    发表于 2018-7-17 16:29:33

    回帖奖励 +4

    收藏了
    使用道具 举报 回复
    发表于 2018-7-17 22:16:08

    回帖奖励 +4

    拿字典~~~~~~
    使用道具 举报 回复

    回帖奖励 +4

    留下了没有技术的泪水。
    使用道具 举报 回复
    发表于 2018-7-18 11:56:20

    回帖奖励 +4

    学习 学习
    使用道具 举报 回复
    1234下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册