利用python編寫簡易POC腳本

POC:概念證明,即概念驗證(英語:Proof of concept,簡稱POC)是對某些想法的一個較短而不完整的實現,以證明其可行性,示范其原理,其目的是為了驗證一些概念或理論。?

聲明:請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與文章作者和本博客無關。

????????今天本來在手刷漏洞(太菜了,0day挖不出來,只能撿漏一下大佬挖過的),用Fofa?API調用的腳本搜集一下最近剛了解到的網絡設備漏洞的網站信息,導出后發現大概600多條。太多了,手刷有點慢,到網上找了一下也沒有發現此類POC利用的腳本,想了想不如自己寫一個簡易的方便以后操作,編寫完成后想著與大家分享一下編寫思路。(Fofa?API調用腳本網上有很多大佬寫好的,大家可以自行找一下)

編寫思路

第1步:找爬蟲代碼

隨便找了一個爬蟲代碼

import urllib.request
url = ""                               #請求的URL地址
user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent":user_agent}    #定義了一個名為"user_agent"的變量,其中存儲了一個用戶代理(User-Agent)字符串,用來偽裝成Mozilla Firefox瀏覽器
req = urllib.request.Request(url,headers = headers) #創建一個Request對象
response = urllib.request.urlopen(req)              #發送請求并獲得響應
html = response.read()                              #讀取響應內容復制給html
print(html)                                         #打印html

第2步:更改輸出信息

改一下輸出,當成功訪問時,輸出網站地址;如果發生異常,則會打印異常信息

import urllib.requesturl = ""                       #請求的URL地址
user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
req = urllib.request.Request(url, headers=headers)try:urllib.request.urlopen(req)print("成功訪問:"+url)    #訪問成功則打印 請求的URL
except Exception as e:print(e)                  #訪問失敗則打印 異常信息

第3步:SSL證書驗證報錯

?當訪問 https?協議網頁是發生了報錯:

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1002)>

這個錯誤是由于SSL證書驗證失敗引起的。在使用 urllib.request.urlopen() 函數發送HTTPS請求時,會對服務器的SSL證書進行驗證,以確保連接的安全性。

更改代碼直接忽略SSL證書驗證(這樣做會降低連接的安全性,需要謹慎使用)

import urllib.request
import ssl
url = ""                    #請求的URL地址
user_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent":user_agent}
req = urllib.request.Request(url,headers = headers)
context = ssl._create_unverified_context()
try:urllib.request.urlopen(req, context=context)print("成功訪問:"+ url)
except Exception as e:print(e)

第4步:讀取文件中的URL

因為此時還是需要手動向代碼內添加請求URL,所以我們利用循環語句讀取文件內的URL來進行判斷(代碼中文件名為 urls.txt ,可以根據需要自己更改)

import urllib.request
import ssluser_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
context = ssl._create_unverified_context()# 從txt文件中讀取url列表
with open("urls.txt", "r") as file:urls = file.readlines()# 使用for循環遍歷url列表
for url in urls:url = url.strip()  # 去除每行url中的換行符和空白字符req = urllib.request.Request(url, headers=headers)try:urllib.request.urlopen(req, context=context)print("成功訪問:" + url)except Exception as e:print(e)

第5步:文件目錄和參數信息可控

在利用漏洞進行測試時,我們需要根據不同的漏洞自行輸入不同的 文件目錄?和?參數信息,所以我們需要可控的函數進行傳參(parsed_url[2]和parsed_url[4]分別為文件目錄和參數信息傳參位置

urlparse() 函數是Python標準庫中 urllib.parse 模塊提供的一個函數,用于解析URL字符串并返回一個包含URL各個部分的命名元組。

????????URL(Uniform Resource Locator)是用于標識互聯網上資源位置的字符串。例如,https://example.com/index.html 就是一個URL。它由多個部分組成,包括協議(scheme)、網絡位置(netloc)、路徑(path)、查詢參數(query)、片段(fragment)等。

quote() 函數是Python標準庫中 urllib.parse 模塊提供的一個函數,用于將字符串進行URL編碼。該函數將字符串中的特殊字符轉換為它們的十六進制表示,以便它們可以安全地在URL中傳輸。

import urllib.request
import ssl
from urllib.parse import urlparse, quoteuser_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
context = ssl._create_unverified_context()# 從txt文件中讀取url列表
with open("1.txt", "r") as file:urls = file.readlines()# 使用for循環遍歷url列表
for url in urls:url = url.strip()  # 去除每行url中的換行符和空白字符parsed_url = list(urlparse(url))  # 將元組對象轉換成列表parsed_url[2] += ""  # 將字符串添加到path屬性上parsed_url[4] = ""  # 修改查詢參數部分的值encoded_path = quote(parsed_url[2])  # 對路徑部分進行編碼encoded_query = quote(parsed_url[4])  # 對查詢參數部分進行編碼final_url = f"{parsed_url[0]}://{parsed_url[1]}{encoded_path}?{encoded_query}"  # 拼接編碼后的URLreq = urllib.request.Request(final_url, headers=headers)try:urllib.request.urlopen(req, context=context)print("成功訪問:" + final_url)except Exception as e:print(e)

第6步:自動添加協議頭

????????在運行過程中產生了報錯(因為報錯涉及隱私信息就不做展示了),此錯誤是因為在創建 urllib.request.Request 對象時,報告了一個位置的URL類型。通過對錯誤信息查看發現缺少了協議部分,這是由于URL字符串格式不正確導致的,查看后發現導出到?txt?文件中的網站信息存在部分沒有協議。

對url進行判斷,如果有用協議部分,自動添加http協議頭

import urllib.request
import ssl
from urllib.parse import urlparse, quoteuser_agent = "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"
headers = {"User-Agent": user_agent}
context = ssl._create_unverified_context()# 從txt文件中讀取url列表
with open("1.txt", "r") as file:urls = file.readlines()# 使用for循環遍歷url列表
for url in urls:url = url.strip()  # 去除每行url中的換行符和空白字符parsed_url = list(urlparse(url))  # 將元組對象轉換成列表if not parsed_url[0]:  # 如果協議部分為空字符串,則手動添加默認協議parsed_url[0] = "http"parsed_url[2] += ""  # 將字符串添加到path屬性上parsed_url[4] = ""  # 修改查詢參數部分的值encoded_path = quote(parsed_url[2])  # 對路徑部分進行編碼encoded_query = quote(parsed_url[4])  # 對查詢參數部分進行編碼final_url = f"{parsed_url[0]}://{parsed_url[1]}{encoded_path}?{encoded_query}"  # 拼接編碼后的URLreq = urllib.request.Request(final_url, headers=headers)try:urllib.request.urlopen(req, context=context)print("成功訪問:" + final_url)except Exception as e:print(e)

????????此時一個網絡設備漏洞利用的簡易POC就編寫完成了,parsed_url[2]和parsed_url[4]分別為文件目錄和參數信息傳參位置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214352.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214352.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214352.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

三哥的黑科技,印度發布無線加熱服裝專利,冬季神器要來了

眾所周知風和自由在冬天是不存在的&#xff0c;冬天只剩下冰冷的像刀子一樣的風刮在你的臉上&#xff0c;哪怕穿的很厚&#xff0c;戴上全盔&#xff0c;也無法阻擋冰冷的風帶走你身體溫度&#xff0c;如果穿的特別多&#xff0c;騎車時候的舒適感和穿脫衣物的繁瑣也是一大頭疼…

【MySQL系列】Centos安裝MySQL

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

vim常用鍵位總結

1、移動光標 按鍵作用h或←光標向左移動一個字符j或↓光標向下移動一個字符k或↑光標向上移動一個字符l或→光標向右移動一個字符Ctrl f或Page Down屏幕向下移動一頁&#xff08;常用&#xff09;Ctrl b或Page Up屏幕向上移動一頁&#xff08;常用&#xff09;Ctrl d屏幕向…

Kafka使用總結

1、Kafka是何如做到高性能的&#xff1f; a、消息批處理減少網絡通信開銷&#xff0c;提升系統吞吐能力&#xff08;先攢一波&#xff0c;消息以“批”為單位進行處理&#xff09; 生產端&#xff1a;無論是同步發送還是異步發送&#xff0c;Kafka都不會立即就把這條消息發送出…

【C++】算法庫(復制操作、交換操作、變換操作)

C算法庫 文章目錄 C算法庫復制操作copy , copy_ifcopy_ncopy_backward 交換操作swapswap_rangesiter_swap 變換操作transformreplacereplace_copy replace_copy_if 算法庫提供大量用途的函數&#xff08;例如查找、排序、計數、操作&#xff09;&#xff0c;它們在元素范圍上操…

java--StringBuilder、StringBuffer、StringJoiner

1.StringBuilder ①StringBuilder代表可變字符串對象&#xff0c;相當于是一個容器&#xff0c;它里面裝的字符串是可以改變的&#xff0c;就是用來操作字符串的。 ②好處&#xff1a;StringBuilder比String更適合做字符串的修改操作&#xff0c;效率會比更高&#xff0c;代碼…

Java入門:EditPlus的安裝與配置講解

1. 前言 Java是一種面向對象的編程語言&#xff0c;廣泛應用于各種平臺和設備。在Java開發過程中&#xff0c;一個好的集成開發環境&#xff08;IDE&#xff09;是非常重要的。EditPlus是一款簡單易用的文本編輯器&#xff0c;它提供了一些方便的功能來支持Java開發。本文將介…

【開源】基于JAVA的木馬文件檢測系統

項目編號&#xff1a; S 041 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S041&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S041&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 數據中心模塊2.2 木馬分類模塊2.3 木…

Leo贈書活動-13期 【以企業架構為中心的SABOE數字化轉型五環法】文末送書

Leo贈書活動-13期 【以企業架構為中心的SABOE數字化轉型五環法】文末送書 ?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客…

記錄 | xshell輸出錯亂解決

輸出錯亂問題&#xff1a; 解決方法&#xff1a;

VS Code使用 CMake 或 Makefile管理C++多文件編譯

VS Code使用 CMake 或 Makefile管理C多文件編譯 一、Cmake方式1、文件結構2、構建項目 二、Makefile方式1、文件結構2、Makefile3、構建項目 三、附件示例中使用到的文件及代碼 使用 CMake 或 Makefile 是更加標準和靈活的方法來管理多文件編譯。以下是一個簡單的示例&#xff…

80個常用shell命令及簡單用法

Shell命令是Linux和Unix系統中的基礎&#xff0c;用于完成各種操作&#xff0c;如文件管理、程序執行、文本處理等。下面列舉一些常用的Shell命令&#xff0c;并詳細解釋它們的功能及應用場景&#xff1a; ls - 列出目錄內容 功能&#xff1a;列出指定目錄中的文件和目錄。應用…

智能優化算法應用:基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于郊狼算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.郊狼算法4.實驗參數設定5.算法結果6.參考文獻7.MA…

Mybatis增刪改查基礎

MyBatis可根據查詢的結果類型、查詢條件的不同進行統一處理。 1 查詢數據 1.1 根據查詢數據條數來分析不同的情況 1.1.1 查詢單條數據 可以通過實體類、list集合、map等處理查詢結果。 通過實體類查詢單條數據 User queryUserById(Param("id") Integer id);<…

C、C++、C#的區別概述

C、C、C#的區別概述 https://link.zhihu.com/?targethttps%3A//csharp-station.com/understanding-the-differences-between-c-c-and-c/文章翻譯源于此鏈接 01、C語言 ? Dennis Ritchie在1972年創造了C語言并在1978年公布。Ritchie設計C的初衷是用于開發新版本的Unix。在那之…

express框架使用

一、express介紹 express 是一個基于 Node.js 平臺的極簡、靈活的 WEB 應用開發框架&#xff0c;簡單來說&#xff0c;express 是一個封裝好的工具包&#xff0c;封裝了很多功能&#xff0c;便于我們開發 WEB 應用&#xff08;HTTP 服務&#xff09; 二、express 使用 2.1 e…

【組合數學】遞推關系

目錄 1. 遞推關系建立2. 常系數齊次遞推關系的求解3. 常系數非齊次遞推關系的求解4. 迭代法 1. 遞推關系建立 給定一個數的序列 f ( 0 ) , f ( 1 ) , . . . , f ( n ) , . . . , f (0), f(1), ..., f(n ),... , f(0),f(1),...,f(n),..., 若存在整數 n 0 n_0 n0? &#xff…

datav-實現輪播表,使用updateRows方法-無縫銜接加載數據

前言 最近在做大屏需求的時候&#xff0c;遇到一個輪播數據的需求&#xff0c;查看datav文檔發現確實有這個組件 但這個組件只提供了一次加載輪播的例子&#xff0c;雖然提供了輪播加載數據updateRows方法 但是文檔并沒有觸發事件&#xff0c;比如輪播完數據觸發事件&#xf…

ESL電子標簽的真相:電子墨水屏沒墨水?

一說到電子墨水屏 你大概率會想到Kindle 如果你問是不是墨水做的 那這篇文章你就得好好看看了 在我們日常與客戶的溝通中 為數不多卻出乎意料地有好幾個以下對話↓ 在此辟謠 電子墨水屏里確實 沒 有 墨 水 那它是什么樣的原理&#xff1f;為什么越來越多顯示設備采用&…