因疫情在忙其他事情也很久沒上,無意看到乙個較為完善的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,匯...