Skip to main content

PatriotCTF 2024 rustLock upsolve

·1 min· loading · loading · ·
hokak
Author
hokak
need more sleep
Table of Contents

HelloWindows.exe
#

main
#

分析過後可以看到有使用VirtualProtect把一段記憶體改成rwx
並把一段shellcode複製到上面,並執行他

alt text

shellcode_data
#

然後實際跳到shellcode,會看到一堆亂碼

alt text
可以使用edit>code把這段data轉成assembly
alt text
然後create function
alt text

shellcode
#

實際來分析shellcode

alt text
改一改參數的變數類型 %d被存到v6,且在function call的時候v7有使用到取址運算子&
因此可以猜測a2scanf
alt text
接下來進入了一的for迴圈,並使用了v6[1]當counter
然後對data[v6[1]] - v7,再取LOBYTE和fake_flag做xor

solution
#

分析過程

  • 使用者輸入了一個整數
  • data[v6[1]] - v7
  • 取最低byte當xor的值

因為是取最低byte,所以可以得知flag的結果只有256種,因此窮舉0~255當key就可以得到flag了