iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0
Security

30 天闖關 picoCTF系列 第 28

[2025鐵人賽Day28]Glitch Cat

  • 分享至 

  • xImage
  •  

這是今天的題目,題目給了我們一個用netcat連上去的伺服器
https://ithelp.ithome.com.tw/upload/images/20251005/20178623yJMEQNbS8z.png

┌──(kali㉿kali)-[~]
└─$ nc saturn.picoctf.net 64285

那我們連上去的時候看到題目給了這串看似亂碼的字串

picoCTF{gl17ch_m3_n07_' + chr(0x61) + chr(0x34) + chr(0x33) + chr(0x39) + chr(0x32) + chr(0x64) + chr(0x32) + chr(0x65) + '}'

這裡的chr(0x..) 表示把十六進位hex數值轉成對應的ASCII 字元,把每個0x值換算成字元

0x61 → a
0x34 → 4
0x33 → 3
0x39 → 9
0x32 → 2
0x64 → d
0x32 → 2
0x65 → e

那我們使用這個指令去完成

printf 'picoCTF{gl17ch_m3_n07_\x61\x34\x33\x39\x32\x64\x32\x65}\n'

\x61\x34\x33\x39\x32\x64\x32\x65是一連串的hex escape也就是十六進位跳脫序列。printf看到\xNN會把他當成一個位元組,把它的十六進位值轉成對應的ASCII字元再輸出。

因此可以得到

picoCTF{gl17ch_m3_n07_a4392d2e}

心得:從這題讓我了解到,遇到像是chr(0x...) 或其它hex表示法時,先把hex轉成ASCII還原,通常有機會就能得到提示的字串或flag。這題我不用echo是因為printf比它更可靠,echo在不同shell上對escape跳脫序列的支援不一致,因此不一定能呈現出答案,而printf則在腳本與互動式都比較穩定。除此之外,也讓我明白遇到像亂碼的東東或拼接的輸出時。不要急著認為題目很難,先從最基礎的表示法下手就有機會能突破。其實我感覺這題和日常的資訊安全分析有點像,例如分析惡意程式或網路封包時,也常常會遇到編碼過的payload。如果缺乏對這些資料型式的敏感度,就容易被誤導或錯過重點。寫了這麼多天的題目,我明白了練習不只是學習工具的用法,還能幫助我在之後實際的資安應用作業上更有效率。


上一篇
[2025鐵人賽Day27]解碼
下一篇
[2025鐵人賽Day29]where are the robots
系列文
30 天闖關 picoCTF29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言