# [109-1] Web Security Basic 3 ###### tags: `109-1 共筆` :::info - 講者:[KaiBro](http://cv.kaibro.tw/) - 共筆:https://hackmd.io/@NTUST-Hack/1091-2 - Slide: https://drive.google.com/file/d/1_Z4dOdoTrHV9TywdnLVOXLXzKN61D4V0/view - YouTube: https://youtu.be/JTJ5iujvUyM ::: ## 序列化與反序列化 ### 序列化 - 儲存資料的方法 - 常用在RPC RMI ![](https://i.imgur.com/dVM6BB5.png) - 例子 - php 的陣列(array) - xml json ### 反序列化 - 錯誤通常出現在反序列化 - 可以呼叫 method master - 讓他執行你想要執行的function - 每個程式序列化格式大同小異 - (不過呼叫的function才是重點) #### 以php舉例 - 序列化機制 - Object會對應到Class - Class必須被定義 - 資料型別 - String - Interger - Boolean - Array - Object - O:class{1:1:1,2:2:2} - 變數差異 - public - private - null byte把Class name包起來 - protected - null byte把*包起來 - null byte是看不到的所以容易忘記 - PHP Magic Method - __wakeup() - 每當他反序列化 - __destruct() - 銷毀物件時 - __toString() - 轉成字串時 - __call() - 不知到要呼叫什麼的時候 - 還有很多... > 反序列化題目通常會自己寫PHP code去生payload #### POP Chain * 串 Gadget 形成攻擊鏈拿來利用 - 白箱比較容易取得RCE #### Phar - 壓縮格式 - metadata會被反序列化 ### python pickle - 序列化: pickle.dumps() - 反序列化: pickle.loads() - stack base - 直接丟class就能function了ㄛ ### java - 很多第三方lib所以可以運用他來變成gadget chain - [ysoserial](github.com/frohoff/ysoserial) ## SSRF - 讓伺服器發送請求往內網發送請求 - 可以摸到內網資源 ### XSPA - Port Scan - 內網ip scan - 127.0.0.1/8 - 192.168.0.0/16 - 10.0.0.0/8 - 172.16.0.0/12 - XXE - FFMPEG - Database內建函數 - ImageMagick ## Gopher - 可建構任意TCP封包 ## 聊天區