zoukankan      html  css  js  c++  java
  • 运用Python成为黑客

    1.Fuzz测试:

         漏洞挖掘有三种方法:白盒代码审计、灰盒逆向工程、黑盒测试。其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁。

      Fuzz测试,也叫做“模糊测试”,是一种挖掘软件安全漏洞、检测软件健壮性的黑盒测试,它通过向软件输入非法的字段,观测被测试软件是否异常而实现。Fuzz测试的概念非常容易理解,如果我们构造非法的报文并且通过测试工具打入被测设备,那么这就是一个Fuzz测试的测试例执行,大多数测试工程师肯定都尝试过这种测试手段。

      对于网络协议漏洞挖掘来说,Fuzz测试也就意味着打入各种异常报文,然后观察设备是否有异常。

    2.IDA是什么:IDA是一个反汇编软件;交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。

    3.代码审计:顾名思义就是检查源代码中的缺点和错误信息,分析并找到这些问题引发的安全漏洞,并提供代码修订措施和建议;

    4.Python入门:安装第三库:

    **把包下载到本地后解压:

    wget http://***//***//nmap.tar.gz

    tar -xzf nmap.tar.gz

    **把当前目录切换到解压出来的目录:

    cd  python-nmap-0.2.4/

    **在这个目录中用python setup.py install命令安装包:

    python setup.py install

    5.TCP套接字:

    TCP套接字就是IP号加端口号。其中,IP号是网络层用来寻找主机的;端口号运输层用来找进程的,在网络层找到主机后就依据端口号找到相应进程,从而实现用户与服务器的通信。 

    6.读取banner:即连接上服务器后,服务器响应的第一句欢迎语句

    7.Python变量:

    **Python中,变量是指存储在某个内存地址上的数据,这个内存地址可以存储不同的值,如整型,实数,布尔值,或列表(list)或词典这类复杂的数据;

    **声明变量时,Python会为变量保留内存空间,程序员可以不显式的声明变量的类型,Python解释器可以决定变量的类型和为变量保留的多少内存空间;

    8.安装Python的第三方模块:

    **在windows环境下,python配置过环境变量后,最新版本的python自动安装easy_install命令:

    **所以,在cmd下使用easy_install命令安装第三方模块就可以:

    easy_install python-nmap

    easy_install pyPdf python-nmap pygeoip mechanize BeautifulSoup4

    9.如果我们使用pip安装失败,我们可以直接下载包或模块的安装文件,然后手动安装。

    **常用的两个下载包和模块安装文件的网站:PyPI-the Python Package IndexPython Extension Packages

    **在上面右上角红线框住的search中输入你要下载的包或模块名,即可进入下载页面。下载的是压缩文件,如何安装呢? 
    1)解压,cmd下直接按:c:就可以进入C盘 
    2)在命令提示符窗口中,使用cd进入到解压后的文件的路径下 
    3)输入命令python setup.py install

    **这个网站下载的是后缀为.whl的文件,怎么来运行下载的.whl安装文件呢? 
    1)在命令提示符窗口中,找到指定路径(.whl安装文件的路径) 
    2)pip install .whl文件名

    10.在windows下,cmd中可以直接使用pip命令:但是需要版本更新:

    X:>pip install python-bluez bluetooth python-obexftp
    Collecting python-bluez
    Could not find a version that satisfies the requirement python-bluez (from versions: )
    No matching distribution found for python-bluez
    You are using pip version 8.1.1, however version 9.0.1 is available.
    You should consider upgrading via the 'python -m pip install --upgrade pip' command.

    X:>python -m pip install --upgrade pip
    Collecting pip
    Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 265kB/s
    Installing collected packages: pip
    Found existing installation: pip 8.1.1
    Uninstalling pip-8.1.1:
    Successfully uninstalled pip-8.1.1
    Successfully installed pip-9.0.1

    11.Python字符串:string模块提供了一系列非常强壮的处理字符串的方法:

    **lower():将字符串转成小写形式;

    **replace(old,new):用new子串取代old子串

    **find():返回子串在字符串中第一次出现时的偏移量;

    12.Python的List(列表):list数据结构是在python中存储对象数组的极好方法,list还内置了执行添加,插入,删除,出站,索引,计数,排序,反转等操作方法;

    **append()方法:添加元素进入list;

    **sort()方法:对list中的元素排序;

    **index()方法:对list中指定的元素进行索引;

    **remove()方法:删除list中指定的元素;

    13.Python的词典:Python的词典数据结构提供了一个可以存储任意数量的Python对象的哈希表;

    **词典由n对键和值的项(item)组成;

    **创建词典时,每个键和它的值都是以冒号分隔的,同时用逗号分隔各个项;

    **注意:key()方法返回的是词典中所有键的列表,而 .items()方法返回的是词典中所有项的完整信息的列表;

     

    14.Python的网络:socket模块提供了一个用python进行网络连接的库;

    **导入socket模块后,实例化一个socket类的新变量;

    **用connect()方法建立与指定IP地址与端口的网络连接;

    **连接成功后,就可以通过套接字进行读/写操作

    **recv(1024)方法将读取套接字中接下来的1024B数据

    15.Python的条件选择语句:IF语句是对逻辑表达式进行求值,并根据求值结果做出决定;

    **要想知道某个指定的FTP服务器中是否存在可以攻击的漏洞,就需要将服务器的响应结果与一些已知的存在漏洞的FTP服务器版本的信息进行比较;

    >>>import socket

    >>>socket.setdefaulttimeout(2)

    >>>s=socket.socket()

    >>>s.connect(("192.168.95.148",21))

    >>>ans=s.recv(1024)

    >>>if ("FreeFloat Ftp Server (Version 1.00)" in ans):

    ...   print("[+] FreeFloat FTP Server is vulnerable.")

    ...elif("3Com 3CDaemon FTP Server Version 2.0" in banner):

    ...   print("[+] 3CDaemon FTP Server is vulnerable.")

    ...elif ("Ability Server 2.34" in banner):

    ...   print("[+] Ability FTP Server is vulnerable.")

    ..elif ("Sami FTP Server 2.0.2 "in banner):

    ...  print("[+] Sami FTP Server is vulnerable.")

    ...else:

    ...  print("[-]FTP Server is not vulnerable. ")

    16.Python的异常处理:try/except语句进行异常处理:

    >>>try:

    ...  print("[+] 1337/0="+str(1337/0))

    ...except:

    ...  print("[-] Error")

    >>>try:

    ...   print("[+] 1337/0="+str(1337/0))

    ...except Exception,e:                      //将异常存储到变量e,同时还要显式的将变量e转换为一个字符串

    ...  print("[-] Error="+str(e))

  • 相关阅读:
    Queue
    Singly-Linked List
    Array
    HTTP请求详解
    封装element的API
    uniapp登录逻辑
    Selector学习笔记 (未完待续)
    <Scalable IO in Java>学习
    Spring PropertyMapper源码阅读笔记
    leetcode 字节跳动探索系列
  • 原文地址:https://www.cnblogs.com/hqutcy/p/6080681.html
Copyright © 2011-2022 走看看