XCTF-Reverse:logmein
生活随笔
收集整理的這篇文章主要介紹了
XCTF-Reverse:logmein
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目地址:https://adworld.xctf.org.cn/task/answer?type=reverse&number=4&grade=0&id=5078&page=1
發現程序是一個ELF文件,將其放入Linux環境中進行分析,發現程序是64位的
直接拖進ida64
step1、從main函數開始分析,使用F5查看偽代碼
題目說是涉及算法逆向,應該是通過一系列比較可以得到正確的結果
補:這里(char)(((_BYTE )&v7 + i % v6) ^ v8[i])
BYTE 經查詢,是相當于unsigned char
然后可以得到一個二進制碼與后面v8[i]進行異或運算,然后轉換為char類型依次比較
所以把每一個比較的字符存儲進行輸出就可以得到flag
證明輸入的字符串就是flag
發現算法的關鍵在于 V6、V7、V8 的異或處理,通過分析得到如下代碼:
key1=":\"AL_RT^L*.?+6/46" #v8 key2="harambe" #v7 key3=7 #v6 flag='' for i in range(0,len(key1)):flag += chr(ord(key1[i])^ord(key2[i%key3])) print(flag)
RC3-2016-XORISGUD
ord():是將字符串轉換為ascii格式,為了方便運算
chr():是將ascii轉換為字符串
至于為什么要倒序使用harambe也是看了大佬的WP才知道的 [●′?`●] ~~
x86系列的CPU都是以小端序儲存數據的,即低位字節存入低地址,高位字節存入高地址,所以正確的字符串應該反過來
總結
以上是生活随笔為你收集整理的XCTF-Reverse:logmein的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 明显调用的表达式前的括号必须具有函数类型
- 下一篇: git rebase --skip_可冒