amf資料解碼

2021-07-15 06:21:52 字數 639 閱讀 7966

這兩天測試**,發現了乙個flex架構+amf協議的站點。別說注入和跨站了,連傳送包和返回包的資料都看不明白,在嘗試各種前端輸入無果後,決定研究一下這個少見的技術組合。flex是用來做flash展示的,主要用來做頁面呈現,不深究;主要是amf協議資料了。通過查詢發現python擁有amf處理模組,very beautiful,果然是強大的膠水語言,越來越喜歡python了。接下來給大家分享一下具體實現過程。

接下來就是解碼過程:

from pyamf import remoting

remoting.decode(data)

其中data就是amf格式的資料報。就這麼簡單,那反過來,remoting.encode(data),就是轉換為amf格式的資料。哈哈,這樣一來就可以結合sqlmap進行進一步測試了。

----後記----

實踐之後發現,並沒有那麼簡單。remoting.decode(data)可以對response回來的資料進行解碼,這個沒有問題。問題在於傳送資料的時候並不是remoting.encode加密的。

request中的data用到了oflex.messaging的格式,需要用到pyamf.decoder進行解碼,解碼之後修改request資料,用pyamf.encode進行加密,再加上不為人知的格式頭才能傳送成功。

rtmp資料封裝二 AMF

rtmp協議在傳輸script資料onmetadata時使用amf action message format 格式封裝。amf type對應的編號 amf type data length data 1 字串 amf string和amf long string都是存字串,amf string的字...

RTMP協議分析 二 AMF資料

rtmp包預設的最大長度為128位元組,或通過chunksize改變rtmp包最大長度 當amf資料超過128byte的時候就可能有多個rtmp包組成,如果需要解碼的rtmp包太長則被tcp協議分割成多個tcp包.那麼解碼的時候需要先將包含rtmp包的tcp封包合併,再把合併的資料解碼,解碼後可得到...

RTMP協議分析 二 AMF資料

型別說明 objtype 資料 datasize core string 0x02 2位元組 2位元組的資料紀錄了string的實際長度 core object 0x03 0位元組 開始巢狀0x00000009表示巢狀結束 null 0x05 0位元組 空位元組無意義 core number 0x0...