POC学习记录

POC 指 Proof of Concept(概念验证),是指一个可行性验证,即通过构建一个小型系统或单项功能来验证技术的可行性和正确性。POC 脚本,就是为了验证特定安全漏洞或安全问题而编写的脚本,可用于检测该漏洞是否存在,以及漏洞的利用方式和危害范围。

Python 中常用的函数库

sys

sys模块是与python解释器交互的一个接口

requests

requests 是 Python 中一个广泛使用的 HTTP 库,用于发送 HTTP

import requests

 # 发送 GET 请求
 response = requests.get('https://www.csdn.com')
 print(response.status_code)
 print(response.text)
 
 # 发送 POST 请求
 data = {'username': 'root', 'password': 'root'}
 response = requests.post('https://www.example.com/login', data=data)
 print(response.status_code)

requests.get(url,headers,data,verify=False,proxies=proxy,timeout=10)
url —— 请求的url
headers —— 请求时构造的请求头
data —— 请求时带入的数据
verify —— 取消https告警
proxies —— 代理设置
timeout —— 请求响应超时处理
struct

struct模块提供了用于在字节字符串和Pytdon原生数据类型之间转换函数

struct模块基本功能

  • 按指定格式将python数据转换为字节流数据;

  • 将字节流数据转换为指定的python数据类型;

  • 处理二进制文件数据;

  • 处理C语言中的结构体。

base64 

对bytes类型数据进行编码,并得到bytes类型的密文数据(实现Base64编码和解码的标准模块)

import base64

base64.b64encode() —— 编码函数
base64.b64decode() —— 解码函数
re

re模块是python提供的一套关于处理正则表达式的模块

  •   findall 查找所有. 返回list
  •  search 会进⾏匹配. 但是如果匹配到了第⼀个结果. 就会返回这个结果. 如果匹配不上search返回的则是None

  •  match 只能从字符串的开头进⾏匹配

  • finditer, 和findall差不多. 只不过这时返回的是迭代器(重点)

  • compile() 可以将⼀个⻓⻓的正则进⾏预加载. ⽅便后⾯的使⽤

  • split() 函数用于根据正则表达式模式的匹配结果分割字符串,并以列表形式返回分割后的子串

  • sub() 函数用于在字符串中查找并替换所有符合正则表达式模式的子串,然后返回替换后的字符串

 BeautifulSoup

BeautifulSoup 是一个 Python 第三方库,用于解析 HTML 和 XML 文档。可以使用它来遍历、搜索和修改文档,并提取所需的信息。


from bs4 import BeautifulSoup


 html = """
 <html>
 <head><title>这是一个标题</title></head>
 <body>
 <p class="content">这是一个段落。</p>
 <a href="https://www.example.com">这是一个链接</a>
 </body>
 </html>

# 创建 BeautifulSoup 对象
 soup = BeautifulSoup(html, 'html.parser')
 
 # 选取元素
 title = soup.title
 p = soup.select_one('p.content')
 a = soup.select_one('a[href="https://www.example.com"]')
 
 # 获取元素属性
 print(title.text)
 print(p.text)
 print(a['href'])

 json

import json
 
 # 将 Python 对象转化为 JSON 格式
 dict_data = {'name': 'dream', 'age': 21}
 json_data = json.dumps(dict_data)
 print(json_data)
 
 #将 JSON 格式转化为 Python 对象
 json_str = '{"name": "dream", "age": 21}'
 dict_obj = json.loads(json_str)

lxml

 XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据,也可以定位特定元素及节点的信息 

lxml 定位元素节点涉及到Xpath语法

from lxml import etree
html = etree.HTML(response.text)
result = html.xpath('xpath语句')
print(result)
 optparse

 命令行参数模块,在Poc中经常看到一些参数 -h(--hlep)、-u(--url)等参数,就是使用的此模块

parser = optparse.OptionParser()   # 导入OptionParser对象后才可以使用add_option
parse.add_option('-u','--user',dest='user',action='store',type=str,metavar='user',help='Enter User Name!!')    # 添加需要的参数和内容
parse.set_defaults(v=1.2)  #也可以这样设置默认值  
options,args=parse.parse_args()
 multiprocessing

多进程,在处理一些数据量较大的请求时可以使用多进程来较少处理时间(Pyhton的多线程是假的并不是并发而是串发的)

from multiprocessing import Process
def Poc():
xxxx
....

if __name == '__main__':
    for i in rangge(5):
        thread = Process(target=Poc,args=str(i))
        thread.start()
    Thread.join()
socket

Python提供了两个基本的socket模块。一个是socket,它提供了标准的BSD Socket API;另一个是socketServer,它提供了服务器中心类,可以简化网络服务器的开发

socket.socket(family, type[,proto]):创建并返回一个新的 socket对象

sock.setsockopt( lvl, optname, val ):设置指定 socket选项的值

sock.sendto( data[, flags], addr ):通过 socket发送数据

sock.close():关闭 socket

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值