基於PythonPoc框架

2021-10-02 20:37:38 字數 3495 閱讀 4730

因疫情在忙其他事情也很久沒上,無意看到乙個較為完善的poc框架及原理這裡分享大家共同學習討論。

#!/usr/bin/env python

#coding:utf-8

import requests

class

misiinfo

(object):

def__init__

(self,request=

none

,response=

none):

self.info=

self.info[

"author"]=

"mr_python"

#作者 self.info[

"name"]=

""#漏洞名稱

self.info[

"time"]=

"2019-1-18"

#poc編寫時間

self.info[

"ontent"]=

""#存在漏洞位址

defjiance

(payload)

: headers=

response = requests.session(

)#相當於儲存cookie,方便下乙個訪問

response_ = response.get(payload,timeout=

3,verify=

false

,headers=headers)

return response_

"""漏洞驗證函式"""

defaudit

(arg)

: payload=arg+

'path'

try:

response=jiance(payload)

print

(response.content)

if response.status_code==

200and

"filename:"

in response.content:

if warning_info:

print

(warning_info)

except exception as error:

print

(error)

if __name__ ==

"__main__"

: audit(

"")

requests庫簡介:

requests支援http連線保持和連線池,支援使用cookie保持會話,支援檔案上傳,支援自動確定響應內容的編碼,支援國際化的 url 和 post 資料自動編碼。

大概思路:

首先匯入我們需要的庫request,然後模擬出瀏覽器的請求方式,定義payload以及方法,做乙個異常處理然後返回結果。

1.匯入 requests庫

import requests
定義類

class

nameinfo

(object):

self.info[

"author"]=

self.info[

"time"]=

self.info[

"name"]=

self.info[

"number"]=

self.info[

"rce"]=

def

__init__

(self,request=

none

, response=

none):

#這個則為類的初始化,它在類的例項話操作後,會自動呼叫

def 定義乙個方法

使用 def 開始函式定義,緊接著是函式名,括號內部為函式的引數,內部為函式的 具體功能實現**,如果想要函式有返回值, 在 expressions 中的邏輯**中用 return 返回。

首先我們定義乙個jiance裡面包含了headers,response.

def

jiance

(payload)

: headers=

response = requests.session(

)#相當於儲存cookie,方便下乙個訪問

response_ = response.get(payload,timeout=

3,verify=

false

,headers=headers)

return response_

注: response_ = response.get(payload,timeout=3,verify=false,headers=headers這個也就是 get response中的payload,以及移除ssl證書取消警告,取上文中我們設定的headers,達到請求的作用。

def

audit

(arg)

: payload = arg +

'path'

try:

response = jiance(payload)

print

(response.content)

payload= arg+『path』

設定payload=arg(arg為下面我們傳上來的url)+ 後面的payload的

完成的請求則為

try:為異常處理都是於except來用,達到異常處理。

response=jiance(payload) 讀取出http所返回的狀態

print(response.content)列印出我們 所讀取出來的http的狀態

if response.status_code==

200and

"filename:"

in response.content:

if warning_info:

print

(warning_info)

except exception as error:

print

(error)

if __name__ ==

"__main__"

: audit("")

注: 如果執行主函式我們便會執行下面的audit

audit又傳到了上面的arg裡面,測完成整個payload的測試

其實這個poc還可以根據自己需求進行更改這個框架只是為了有乙個大概思路。

基於框架的 專案目錄框架 搭建

比如基於tp這種框架的專案,需要如何搭建 架子呢。建議首先乙個基本的 基類common。如果有其他 需求 可以參考api 設定介面類 用於規範實現。然後對 各個不同使用者端 或者 型別 設定base 類。如下 basehomeaction.class.php basememberaction.cla...

基於vue的UI框架

1 餓了麼 vue 2.0後台ui框架 2 iview元件庫 iview 主要服務於 pc 介面的中後台業務,很優秀的元件庫,可惜不適合移動端 4 mint ui 餓了麼移動端元件庫 由餓了麼前端團隊推出的 mint ui 是乙個基於 vue.js 的移動端元件庫 5 vue admin 管理面板u...

基於Ant Design UI框架的React專案

一 安裝webstorm noje.js 全域性安裝 詳細安裝這裡略過 成功!三 建立react專案antd demo1 繼續在cmd命令視窗輸入 如上圖,則建立成功!四 引入ant design元件庫 cmd命令進入專案根目錄 yarn add antd 如圖引入成功!五 開啟webstorm,匯...