第五章 Web攻击
Web的套接字函数库:urllib2 (Requests)
这里原著中python2所使用的urllib2模块要被淘汰了,这里我们使用python3的requests模块实现相同的功能。
首先安装requests模块:
pip install requests
我们首先简单了解一下requests模块的简单用法:
import requests
url = "http://www.baidu.com"
# 以字典的形式,构造请求头
headers = {
"User-Agent": "Googlebot"}
# 提交的参数和其值
# payload = {Key1: Value1, Key2: Value2}
# 设置cookie
# cookie = {"Cookie": "*******"}
# 以GET方式请求服务器
body = requests.get(url, headers=headers''', cooikes=cooike,params=payload''')
# 以POST方式请求服务器
body = requests.post(url, headers=headers''', cooikes=cooike,params=payload''')
body.encoding #获取当前的编码
body.encoding = 'utf-8' #设置编码
body.text #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
body.content #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
body.cookies #获得cookie
body.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
body.status_code #响应状态码
body.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()
body.ok # 查看ok的布尔值便可以知道是否登陆成功
print(body.text)
这里我们可以看到成功输出百度的响应内容
开源web安装:
这里可以选择安装与原著相同的joomla,也可以安装其他的一些后台管理系统。
我这里拿我本地搭建的wordpress来举例:下载wordpress源码文件到本地后,通过程序读取源码文件名,过滤一些无意义文件,最后通过构建url,服务器返回的状态码来判断页面或路径是否存在。
import queue
import threading
import os
import requests
# 设置线程
threads = 10
# 指定网站
target = "http://www.test.com/"
# 指定本地扫描路径
directory = "wordpress"
# 排除后缀
filters = [".jpg", ".gif", ".png", ".css"]
# 切换路径
os.chdir(directory)
# 实例化queue
web_paths = queue.Queue()
# 在当前目录下进行遍历目录或文件