iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Security

picoCTF 刷題分享系列 第 11

picoCTF 刷題分享---Day 11(刷題去)

  • 分享至 

  • xImage
  •  

要開始累了,我要開始全力存庫存了,希望可以存到十篇左右!!!/images/emoticon/emoticon18.gif


題目:Ready Gladiator 0
遊戲介紹:
程式碼是用Redcode語言編寫的,是一種為了在「Core War」遊戲中設計的虛擬機語言。
Core War 是一個模擬兩個或多個程式(也稱為「戰士」)在虛擬機(也稱為「核心」)中競爭的遊戲,目的是讓自己的程式佔領核心並終結其他對手的程式。


基本redcode語法:

  1. MOV A, B:將A的值複製到B位置。
  2. ADD A, B:將A的值加到B的值上,並存回B。
  3. SUB A, B:將A的值從B的值中減去,並存回B。
  4. JMP A:跳轉到位置A繼續執行。
  5. JMZ A, B:如果B為0,則跳轉到A。
  6. JMN A, B:如果B不為0,則跳轉到A。
  7. CMP A, B(或 SEQ):比較A和B的值,若相等則跳過下一指令。

解題思路:

  • 根據基本語法可得知MOV a, b跟assembly剛好相反
  • 所以可知在imp.red中的MOV 0, 1
  • 意思是像一條蟲一樣從0一路走,走到最後一路覆蓋(這樣對手的程式碼就會被破壞)
  • 但題目要求的是一直輸
  • 所以把這條MOV 0, 1改成MOV 0, 0
  • 再次執行 nc hostname port < imp.red
  • 即可得到flag
  • 格式:picoCTF{flag.content}

題目:Ready Gladiator 1
解題思路:

  • 這題也是要贏得遊戲
  • 所以需要破壞對手的"路"(也就是地址的值)
  • 所以我們先觀察imp.red
  • $ cat imp.red
  • 觀察完後新增檔案並輸入程式碼
  • $ cat > bomb.red
  • (複製以下文字;後為註釋
    ;redcode
    ;name Bomber

start:
add #5, bomb ; 每次將炸彈的位置往前移動5個單位
mov bomb, @bomb ; 丟出炸彈
jmp start ; 繼續迴圈
bomb:
dat #0 ; 定義炸彈,當 Imp 碰到這個位置時會被摧毀
end start
end

  • 後面有寫每一步的解釋
  • 即可得到flag了
  • 格式:picoCTF{flag.content}

後記:
我一開始覺得這兩題不是一樣的嗎,為什麼程式碼不通用,後來問了GPT後才知道是因為第一關沒有做防禦的動作,所以很好做攻擊,明天會把這系列全部都寫完!!


上一篇
picoCTF 刷題分享---Day 10(刷題去)
下一篇
picoCTF 刷題分享---Day 12(刷題去)
系列文
picoCTF 刷題分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言