• 使用python3从零开始写安全脚本(1)


    写在前面

    在渗透中经常要用到脚本来验证漏洞,所以我打算根据漏洞原理,从零开始写一系列脚本。但是python2和python3中还是比较纠结,python2的urllib2显然对这方面更友好一些,但是python2已经是上一个时代的产物,所以这边准备使用python3进行编写。

    环境配置

    首先要安装ide,这里我选用的PyCharm,不懂的朋友可以参考这一篇博客

    https://blog.csdn.net/u014044812/article/details/78727496

    然后我们再安装python3.7,自动添加好环境变量以后用pip安装环境变量

    requests的使用

    首先我们尝试用requests获取一个网页的信息

    我们要导入requests模块

    import requests

    然后尝试获取某个网页

    r = requests.get('http://wwww.baidu.com')

    最后输出结果

    print(r.text)

    然后我们尝试运行一下代码,它就输出了百度的网页内容。

    这就用python3完成了最简单的get请求了,但是如果我们要发送post请求要怎么办呢?为此我们先搭建一个php环境用来做python脚本的测试。

    <?php
    echo 'post php test';
    echo $_POST['a'];

    然后我们先运行

    import requests
    r = requests.get('https://test.kolue.com/post.php')
    print(r.text)

    这个时候的输出结果是

    C:\Users\Mypc\AppData\Local\Programs\Python\Python37\python.exe C:/Users/Mypc/PycharmProjects/test/.idea/test.py
    post php test

    然后我们尝试通过post的方式提交数据到post.php这个文件,这个时候我们使用的是requests.post,而这个函数则需要带上post的数据

    import requests
    r = requests.post('https://test.kolue.com/post.php',data={'a':'requests post test'})
    print(r.text)

    输出结果

    C:\Users\Mypc\AppData\Local\Programs\Python\Python37\python.exe C:/Users/Mypc/PycharmProjects/test/.idea/test.py
    post php testrequests post test

    我们会发现用于获取结果的是r.text,但是在安全工具的开发中,我们往往有时候不需要获取这些结果集,只需要获取他的状态,比如目录扫描工具,我们只需要获取他的状态码。

    import requests
    r = requests.post('https://test.kolue.com/post.php',data={'a':'requests post test'})
    print('网页的响应状态是:'+str(r.status_code))
    print('网页的内容是:'+str(r.text))
    print('网页的编码是:'+str(r.apparent_encoding))

     其中response对象有以下属性:

    属性 说明
    r.status_code

    http请求的返回状态,若为200则表示请求成功

    r.text

    http响应内容的字符串形式,即返回的页面内容

    r.encoding

    从http header 中猜测的相应内容编码方式

    r.apparent_encoding

    从内容中分析出的响应内容编码方式(备选编码方式)

    r.content

    http响应内容的二进制形式

    r.headers

    http的响应头内容,可以具体到某个响应头的值
  • 相关阅读:
    奥运圣火在家乡传递
    Please stop reinventing the wheel (请不要重复发明轮子)
    使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
    To invoke and to begin invoke, that is a question.
    XML和JSON(JavaScript Object Notation)
    Cloud Computing Is a Big Whiteboard
    TRIE Data Structure
    ASP.NET AJAX UpdatePanel 控件实现剖析
    分布式计算、网格计算和云计算
    系统架构设计师考试大纲(2009版)
  • 原文地址:https://www.cnblogs.com/xsseng/p/9286714.html
Copyright © 2020-2023  润新知