iT邦幫忙

0

資安學習路上-picoCTF 解題(Reverse)1

  • 分享至 

  • xImage
  •  

Reverse

1.Transformation:考unicode


載下來的檔案,看起來編碼錯誤

用unicode線上編輯器轉成16進制

再丟進來從16進制轉到ASCII

2.ARMssembly 0

IDA pro

搜尋IDA pro後載想要安裝版本,這邊用linux

chmod +x idafree77_linux.run  #要先修改權限,再執行
sudo ./idafree77_linux.run
sudo ln -s /opt/idafree-7.7/ida64 /usr/bin #建立實體連結
ida64 #執行

結果發現檔案格式不對,只能硬幹惹

PE是微軟的一種執行檔的資料形式 不是副檔名
直接看fun1後知道是比大小,輸出較大的數

再把比較大的數變成16進位得到flag

ARM

暫存器

SP, the Stack Pointer,R13:用來當作active stack的指標
LR, the Link Register,R14:用來當存子程式的return address

運算

add:加,如:add r1, r2 ==>r1 = r1 + r2
add r1, r2, #1 ==>r1 = r2 + 1
sub:減,如:sub r1, r2 ==>r1 = r1 - r2
sub r1, r2, #1 ==>r1 = r2 - 1

CMP:比較,比較方式也是同sub,用減的來比較,但不影響減數及被減數。
LDR(load (to) Register):從記憶體位址載入資料到單一暫存器,
如:LDR R1, [R0] #R1 = *R0,從位址 R0 載入到 R1暫存器
LDR R0, [R1], #8 // R0 = *R1 then R1 = R1 + 8
STR(store (from) Register):從單一暫存器的值存回記憶體,
如:STR R1, [R0] # *R0 = R1, 把 R1 暫存器寫到位址 R0
STR R0, [R1], #-8 // *R1 = R0 then R1 = R1 - 8

bls:Branch if Lower or the Same,當小於等於時,跳轉(jump)
b :b addr L ==> pc = addr無條件跳轉。

3.keygenme-py

看一下程式碼,很明顯這有flag,但有缺

循著 "key_full_template_trial"搜尋,看到這段很可疑,一看就知道是上面的XXXX

跑一下程式後就找到flag的一部分,加上原本的就解完啦


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言