一次滲透測試的紀錄
前言
被可(ㄑ一ˊ)愛(ㄍㄨㄞˋ)的同事監視,慢慢把一些手邊的筆記整理成文章。
在某間公司任職時,同事間如果有通話需求,會使用 SIP 電話來進行溝通。
但該 SIP 系統已經運行多年,公司預計要汰換掉它,當時的主管之一想說下架之前可以對它做一些安全性的檢測,所以就有了這篇文章。
ps. 因為當時主管對團隊規劃其中一個方向是希望 team 內除了開發能力之外,也可以具備一些紅隊的能力,自己的系統安全性自己要顧。
本文開始重要以下行為皆在取得相關人員的授權後進行,本文僅作為 Writeup,請讀者閱讀後不要自行嘗試,產生的任何後果接與本站無關。
別人家裡門沒鎖,不代表你可以走進去,就算是嘗試也不行。
訊息蒐集先掃掃 server 開了哪些 port
再爆破路徑
大致知道 SIP 系統相關的服務以及後台入口
漏洞查找查了一下 Elastix 有 LFI 的問題
LFI (Local File Inclusion)LFI 最大的漏洞成因在於後端程式語言使用 include 引入其他檔案的時候,沒有去驗證輸入的值或是惡意攻擊者繞過驗證,導致敏感資料外洩,而敏感資料 ...
LeetCode 筆記 - HashTable(2)
題目
454: 4Sum II
383: Ransom Note
15: 3Sum
18: 4Sum
454. 4Sum IIhttps://leetcode.com/problems/4sum-ii/
123Given four integer arrays nums1, nums2, nums3, and nums4 all of length n, return the number of tuples (i, j, k, l) such that: - 0 <= i, j, k, l < n - nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0
Example 1:
1234567Input: nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]Output: 2Explanation:The two tuples are:1. (0, 0, 0, 1) -> n ...
LeetCode 筆記 - HashTable
題目
242: Valid Anagram
1002: Find Common Characters
349: Intersection of Two Arrays
202: Happy Number
1: Two Sum
知識點通常 HashTable 用來快速判斷一個元素是否在集合中。
常見的結構為:
Array
Set: 可以粗暴理解為重複 value 的 Array。
Map: key value pair 的集合,key 不能重複。
242. Valid Anagramhttps://leetcode.com/problems/valid-anagram/
123Given two strings s and t, return true if t is an anagram of s, and false otherwise.An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the ori ...
LeetCode 筆記 - LinkedList(2)
題目
24: Swap Nodes in Pairs
19: Remove Nth Node From End of List
160: Intersection of Two Linked Lists
142: Linked List Cycle II
24. Swap Nodes in Pairshttps://leetcode.com/problems/swap-nodes-in-pairs/
1Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.)
Example 1:
12Input: head = [1,2,3,4]Output: [2,1,4,3]
Example 2:
12Input: head = []Out ...
LeetCode 筆記 - LinkedList
題目
203: Remove Linked List Elements
707: Design Linked List
206: Reverse Linked List
知識點
linkedlist 每一個節點包含兩個部分,一個屬性存放資料,一個指針負責指向下一個節點位置(若無則 null)。
自己手寫的話,最基本的 ListNode 會像這樣
1234567891011public class ListNode{ public int val; public ListNode next; public ListNode() { } public ListNode(int val, ListNode next = null) { this.val = val; this.next = next; }}
linkdlist 不像 array 在記憶體中是連續的位址,而是分散的存在各位址,再透過指針把整個 list 串起來,所以其長度也不需要在一開始就固定。
...
LeetCode 筆記 - Array(2)
題目
977: Squares of a Sorted Array
209: Minimum Size Subarray Sum
977. Squares of a Sorted Arrayhttps://leetcode.com/problems/squares-of-a-sorted-array
1Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
Example 1:
1234Input: nums = [-4,-1,0,3,10]Output: [0,1,9,16,100]Explanation: After squaring, the array becomes [16,1,0,9,100].After sorting, it becomes [0,1,9,16,100].
Example 2:
12Input: nums = [ ...
LeetCode 筆記 - Array
題目
704: Binary Search
27: Remove Element
704. Binary Searchhttps://leetcode.com/problems/binary-search
123Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.You must write an algorithm with O(log n) runtime complexity.
Example1:
123Input: nums = [-1,0,3,5,9,12], target = 9Output: 4Explanation: 9 exists in nums and its index is 4
Example2:
1 ...
ASP.NET 專案設定多個目標框架
前言遇到一個需求是要建立兩個不同版本的 Web API 進行測試,他們會參考到某個類別庫 A。
但為了嚴謹性,希望 NET 6 參考到的類別庫也是使用 NET 6,而不是較低的版本如 NET 3.1 或 NET Standard;反之 NET 3.1 的 Web API 也是希望使用框架目標為 NET 3.1 的類別庫 A。
本文開始簡單紀錄一下調整的過程。
調整 csproj打開類別庫 A 的 csproj
Tips: 在 VS 中可以直接在方案總管中對專案點兩下打開 csproj 設定檔。
將 TargetFramework 加上「s」,然後就可以在「;」後面加上想要支援的版本。
引用該類別庫的專案,會自動選擇能夠兼容的最高版本。
例如: NET 6 API 專案引用類別庫時,雖然可以用 NET 3.1 也可以用 NET 6,但會自動選擇 NET 6。
123<PropertyGroup> <TargetFrameworks>netcoreapp3.1;net6.0</TargetFrameworks></ ...
關於談判二三事
前言這半年來因為工作與房子的事情有了許多「談判」的機會,原本以為自己還算會溝通,但直到坐上「談判桌」才發現談判與溝通能力完全是兩碼子事,不會談判的自己在當下如同誤入叢林的小綿羊,沒有任何保護自己的能力,或者是說,也不知道該如何保護自己。
日前拜讀了劉必榮教授的談判技巧,受益良多,過程中紀錄了一些談判原則想要分享給和我一樣沒什麼談判經驗的讀者。
本文開始
本文沒有任何商業合作,僅是個人筆記分享,如有侵權請告知。
接下來的內容會以條列的形式呈現,不會脈絡化的解釋每個原則。
關於談判
談判本質是交換,不是贏者全拿、輸者全輸。
辯論贏對方的嘴、談判贏對方的心。
談判只是解決問題的方式,不用拿出上戰場殺敵的氣勢。
談判的人與事
搞清楚雙方各自要的是什麼。
What do you want?
(承上)列出
must:你不能讓步的。
want:你想要的,但可以視情況用來交換或放棄。
give:可有可無、給對方也無所謂。
搞清楚要跟誰談,一家公司裡面,不同的人要談不同的東西。
A 和 B 有交情,和 A 談沒籌碼,可以想辦法把 B 拉進來。
牽扯多方的時候,若對方內部有衝突,不要亂同情 ...
玩轉 Fiddler-HTTP(s) 抓包能手 & 常見「特殊」用途
前言你是否曾經有這些困擾呢?
戳 API 想要修改前端 Request 送出去的 JSON,但 JS 被 uglify 很難追、或是開 Postman 但要處理認證、授權、和整包 JSON 很麻煩。
承上,想看的是 UI 與 JS 後續行為,Postman 愛莫能助。
想測試後端驗證,但前端已經有驗證,想測試還要先拔掉前端驗證的 code。
在 Local 調整完檔案(HTML、CSS、JS、Image…etc),想上到正式環境測試一下效果,但又不想真的改到正式環境的檔案?
修改 Response 回傳的資料(EX: 修改後端 API 回傳的使用者權限、查詢結果、新增成功與否…etc,導致前端畫面上的變化)。
IDE 都可以下中斷點,不管啦,我的每個 HTTP Request & Response 也要可以下中斷點,即時查看、修改、決定要不要 drop 掉封包。
如果有任一個需求符合,用 Fiddler 就對了!
PS. 以下文長慎入,可以選擇自己需要的內容閱讀就好。
本文內容:
什麼是 Fiddler,和 Postman、Wireshark 的差異?
實際抓包操作 & ...